我不确定我做错了什么。我以前从来没有遇到过这个问题,也许我有过这个问题,但我从来没有注意过。我有一个局部视图的页面。提交页面时,将检查模型以查看其是否具有ID。如果是,则更新记录。如果没有,它会创建一个新的。很标准。完成后,模型将返回到视图。我似乎遇到的问题是它没有更新模型的任何更改。它与发布的模型相同。好的,这里有一些代码。我创建了一个全新的项目,它仍然无法运作。
另外,我使用Firebug查看返回的原始数据,它仍然是相同的模型。
这是控制器:
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Test()
{
return this.View(new Test());
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult TestDetailPost(Test testin)
{
Test test = new Test();
test.Id = "1";
test.Name = "Guy";
return this.PartialView("TestDetail", test);
}
这是"测试"视图:
@model WebAppTest.Models.Test
@using (Ajax.BeginForm("TestDetailPost", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "TestDetail" }))
{
<p><input type="submit"/></p>
<div id="TestDetail">
@{ Html.RenderPartial("TestDetail", Model); }
</div>
}
这是&#34;测试细节&#34;视图:
@model WebAppTest.Models.Test
<p>@Html.TextBoxFor(a => a.Id)</p>
<p>@Html.TextBoxFor(a => a.Name)</p>
模特:
public class Test
{
public string Id { get; set; }
public string Name { get; set; }
}
所以我发现如果我删除&#34;测试测试&#34;从TestDetailPost操作,它返回我创建的模型。如果我不这样做,它只返回发布的相同模型。当然,我没有做任何数据库保存或任何事情,上面的代码只是为了弄清楚为什么会发生这种情况。
以下是我正在使用的细节:
MVC5 jQuery 1.11.1 jquery.unobtrusive-AJAX
我已使用NuGet将所有文件更新到最新版本。
答案 0 :(得分:7)
在您的操作方法中调用ModelState.Clear();
,如下所示:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult TestDetailPost(Test testin)
{
ModelState.Clear();
Test test = new Test();
test.Id = "1";
test.Name = "Guy";
return this.PartialView("TestDetail", test);
}
我在my answer here中提供了更多详细信息。我希望这会有所帮助。