Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC 4视图随数据更改而重新加载_C#_Asp.net Mvc_Asp.net Mvc 4_Razor - Fatal编程技术网

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

C# MVC 4视图随数据更改而重新加载,c#,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net Mvc,Asp.net Mvc 4,Razor,我有一个简单的控制器和视图: 我只想用新数据重新加载Index.cshtmlview页面。我已经彻底调试了代码。实际上,当控件转到索引(字符串值)方法时,单击“ul”,模型对象将填充新数据,即使在cshtml页面中,模型也会在调试器中显示新列表,但视图不会刷新。我真的不知道为什么。。有人能帮我吗? 如果我在某个地方犯了可怕的错误,请原谅我的无知,因为我是MVC新手。 先谢谢你。。。 控制器: namespace MVCTestApp1.Controllers { public class

我有一个简单的控制器和视图:

我只想用新数据重新加载
Index.cshtml
view页面。我已经彻底调试了代码。实际上,当控件转到
索引(字符串值)
方法时,单击
“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>
}
namespace MVCTestApp1.Controllers
{
公共类TestController:控制器
{
//
//获取:/Test/
公共行动结果索引()
{
ModelState.Clear();
List ll=新列表();
ll.添加(“qq”);
11.添加(“aa”);
ll.添加(“zz”);
返回视图(ll);
}
[HttpPost]
公共操作结果索引(字符串值)
{
ModelState.Clear();
List ll=新列表();
11.添加(“kkk”);
ll.添加(“qq”);
11.添加(“aa”);
ll.添加(“zz”);
返回视图(ll);
}    
}
}
视图:
@模型IEnumerable
@{
ViewBag.Title=“Index”;
}
@使用(Html.BeginForm()){
@Html.ValidationSummary(true)
指数
    @foreach(模型中的var i) {
  • @DisplayFor(ir=>i)
  • }
}
我假设您编写了一些javascript代码,这样当用户单击
  • 元素时,您触发了对
    [HttpPost]
    操作的AJAX调用,将所选值发送到服务器。代码的问题可能是您可能忘记了在
    success
    回调中使用新内容更新DOM。因此,要实现这一点,您可以先将
    内容放在局部视图中:

    List.cshtml

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

    代码看起来不错。它应该可以正常工作,除非中间有其他东西干扰。页面中是否包含任何脚本?另外,检查chrome或firebug(在firefox中)的网络选项卡,了解发生了什么。
    @model IEnumerable<string>
    @{
        ViewBag.Title = "Index";
    }
    
    @using (Html.BeginForm()) 
    {
        @Html.ValidationSummary(true)
    
        <h2>Index</h2>
        <ul id="bb">
            @Html.Partial("_List", Model)
        </ul>
    }
    
    [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);
    }
    
    $(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);
                }
            });
        });
    });