编程语言
首页 > 编程语言> > C#-MVC 4视图重新加载数据更改

C#-MVC 4视图重新加载数据更改

作者:互联网

我有一个简单的控制器并查看:

我只想在Index.cshtml视图页面上重新加载新数据.我已经彻底调试了代码.实际上,当控件转到Index(string value)方法时,单击“ ul”,将向模型对象填充新数据,即使在cshtml页面中,模型也会在调试器中显示新列表,但视图不是变得清新.我真的不知道为什么.有人可以帮助我吗?
 如果我在某个地方犯了可怕的错误,请原谅我的无知,因为我是MVC的新手.
提前致谢…
控制器:

namespace MVCTestApp1.Controllers
{
    public class TestController : Controller
    {
        //
        // GET: /Test/

        public ActionResult Index()
        {
            ModelState.Clear();
            List<string> ll = new List<string>();
            ll.Add("qq");
            ll.Add("aa");
            ll.Add("zz");
            return View(ll);
        }

        [HttpPost]
        public ActionResult Index(string value)
        {
            ModelState.Clear();
            List<string> ll = new List<string>();
            ll.Add("kkk");
            ll.Add("qq");
            ll.Add("aa");
            ll.Add("zz");
            return View(ll);
        }    
    }
}

View:


@model IEnumerable<string>
@{
    ViewBag.Title = "Index";
}

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)

    <h2>Index</h2>
    <ul id="bb">
        @foreach (var i in Model)
        {
           <li>@Html.DisplayFor(ir=>i)</li>
        }
    </ul>
}

解决方法:

我想您编写了一些JavaScript代码,以便当用户点击< li> < ul>的元素您正在触发对[HttpPost]操作的AJAX调用,将选择的值发送到服务器.代码的问题可能是您可能忘记了使用成功回调中的新内容来更新DOM.因此,要使其正常工作,您可以先放置< ul>部分视图中的内容:

List.cshtml:

@model IEnumerable<string>
@foreach (var i in Model)
{
   <li>@Html.DisplayFor(ir=>i)</li>
}

然后将此部分内容包含在主视图中:

@model IEnumerable<string>
@{
    ViewBag.Title = "Index";
}

@using (Html.BeginForm()) 
{
    @Html.ValidationSummary(true)

    <h2>Index</h2>
    <ul id="bb">
        @Html.Partial("_List", Model)
    </ul>
}

OK,现在在您的POST动作中,您可以返回部分内容:

[HttpPost]
public ActionResult Index(string value)
{
    List<string> ll = new List<string>();
    ll.Add("kkk");
    ll.Add("qq");
    ll.Add("aa");
    ll.Add("zz");
    return PartialView("_List", ll);
}

最后一点是javascript代码:

$(function() {
    $('#bb').on('click', 'li', function() {
        var value = $(this).html();
        $.ajax({
            url: $(this).closest('form').attr('action'),
            type: 'POST',
            data: { value: value },
            success: function(partialView) {
                $('#bb').html(partialView);
            }
        });
    });
});

标签:razor,asp-net-mvc-4,c,asp-net-mvc
来源: https://codeday.me/bug/20191122/2062328.html