gpt4 book ai didi

asp.net-mvc - ASP.NET MVC AjaxForm 未正确更新局部 View

转载 作者:行者123 更新时间:2023-12-04 23:21:45 25 4
gpt4 key购买 nike

我不确定我做错了什么。我以前从来没有遇到过这个问题,也许我有,但我从来没有注意到。我有一个带有局部 View 的页面。提交页面时,会检查模型以查看它是否具有 ID。如果是,它会更新记录。如果没有,它会创建一个新的。很标准。完成后,模型将返回到 View 。我似乎遇到的问题是它没有随着模型的任何更改而更新。它与发布的模型相同。好的,这是一些代码。我创建了一个全新的项目,但它仍然不起作用。

此外,我使用 Firebug 查看返回的原始数据,它仍然是相同的模型。

这是 Controller :

[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);
}

这是“测试” View :
@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>
}

这是“测试详细信息” View :
@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; }
}

所以我发现如果我从 TestDetailPost 操作中删除“Test testin”,它会返回我创建的模型。如果我不这样做,它只会返回与发布的相同的模型。当然,我没有做任何数据库保存或任何事情,上面的代码只是为了弄清楚为什么会发生这种情况。

这是我使用的详细信息:

MVC5
jQuery 1.11.1
jquery.unobtrusive-ajax

我已使用 NuGet 将所有文件更新到最新版本。

最佳答案

调用 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 中提供了更多详细信息.我希望这有帮助。

关于asp.net-mvc - ASP.NET MVC AjaxForm 未正确更新局部 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23817025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com