gpt4 book ai didi

asp.net-mvc - ASP.NET MVC : Changing model's properties on postback

转载 作者:行者123 更新时间:2023-12-03 23:18:31 26 4
gpt4 key购买 nike

我一直在使用 ASP.NET MVC 并遇到了一些我无法弄清楚的事情。

假设我有一个像这样的对象:

public class TestObject
{
public string Name { get; set; }
public int Age { get; set; }
}

还有一个像这样的 View 页面(Create.aspx):
<form action="/Create" method="post">
<p>
<%=Html.TextBox("Name") %>
</p>
<p>
<%=Html.TextBox("Age")%>
</p>
</form>

在我的 Controller 上,我有这些操作:
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Create()
{
return View(new TestObject { Name = "DefaultName", Age = 10 } );
}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(TestObject o)
{
o.Name = "ChangedNameToSomethingElse";
o.Age = 15;
return View(o);
}
Html.TextBox()方法始终使用默认值生成文本框,即使在回发之后,其中对象以其值的不同属性传回。现在,当然,我想不出一个现实世界的例子,为什么我想做这样的事情,但我仍然不明白为什么我总是在文本框中填充在 Create 操作中设置的模型值与 AcceptVerbs(HttpVerbs.Get)属性。

备注 : 我试过 Html.TextBox("Name", Model.Name)但结果还是一样。我用 AcceptVerbs(HttpVerbs.Post) 验证了 Create 操作实际运行,通过 ViewData 将值传递给 View 。
此外,当我使用 <%=Model.Name %> 输出值时,会显示更新值但同样,不在文本框中。

有什么明显的我遗漏的东西,或者这种行为背后有什么原因吗?

最佳答案

如果您通过方法的声明或通过 UpdateModel 或 TryUpdateModel 将发布请求的结果绑定(bind)到诸如 TestObject 之类的对象,则名为 ModelState 的属性将被这些值填充。诸如 Textbox 之类的 HTML 助手将始终通过显式传递的模型对象绑定(bind)到模型状态。

关于asp.net-mvc - ASP.NET MVC : Changing model's properties on postback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/707569/

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