Asp.net mvc 4 ajax和mvc回调

Asp.net mvc 4 ajax和mvc回调,asp.net-mvc-4,ajax.beginform,Asp.net Mvc 4,Ajax.beginform,我有一个单独的页面设置了多个部分。我想能够验证和更新每个部分分别。验证工作正常,但当我输入正确的值并按save时,页面将转到部分视图,而不是停留在单个页面上。我做错了什么 这是我的主页: @for (var i = 0; i < 10; i++) { var idTest = "Test_" + i; <div id="@idTest"> @Html.Action("Detail", new { id = i }) </div> } 以下是行动:

我有一个单独的页面设置了多个部分。我想能够验证和更新每个部分分别。验证工作正常,但当我输入正确的值并按save时,页面将转到部分视图,而不是停留在单个页面上。我做错了什么

这是我的主页:

@for (var i = 0; i < 10; i++)
{
var idTest = "Test_" + i;
<div id="@idTest">
    @Html.Action("Detail", new { id = i })
</div>
}
以下是行动:

        [HttpGet]
    public ActionResult Detail(int id)
    {
        Models.Test model = new Models.Test();
        model.Id = id;
        return View(model);
    }
    [HttpPost]
    public ActionResult Detail(Models.Test model)
    {
        if(ModelState.IsValid)
        {
            return PartialView(model);
        }
        return PartialView(model);
    }

将这些行添加到视图中,并使用@Html.Partial,如下所示

 <script src="~/Scripts/jquery-1.8.2.js"></script>
 <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>

所以你的主要观点是

 <script src="~/Scripts/jquery-1.8.2.js"></script>
 <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
@for (var i = 0; i < 10; i++)
{
 var idTest = "Test_" + i;
 <div id="@idTest">
 @Html.Partial("Detail", new Test { Id =  i })}
</div>
}

@对于(变量i=0;i<10;i++)
{
var idTest=“测试”+i;
@Html.Partial(“Detail”,新测试{Id=i})}
}

脚本将用于不引人注目的ajax,这样您的ajax按钮可以正常工作,Html.Partial因此,当您第一次在foreach中加载页面时,只会呈现部分视图(而不是完整视图)

您的UpdateTargetId似乎是错误的,它应该是呈现部分视图的div。请尝试为设置ID并将其设置为目标。另外需要注意的是,请在提交后检查@idTest的值。如果该值是错误的,那么它可能不仅仅是刷新部分视图。确保您包含了不引人注目的ajax脚本文件,请参见!我从nuget那里得到了一个不引人注目的-ajax.js,这很有效。谢谢
 <script src="~/Scripts/jquery-1.8.2.js"></script>
 <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
 <script src="~/Scripts/jquery-1.8.2.js"></script>
 <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
@for (var i = 0; i < 10; i++)
{
 var idTest = "Test_" + i;
 <div id="@idTest">
 @Html.Partial("Detail", new Test { Id =  i })}
</div>
}