我一直在玩ASP.NET MVC,遇到了我无法想象的东西.
假设我有一个这样的对象:
public class TestObject { public string Name { get; set; } public int Age { get; set; } }
和一个视图页面(Create.aspx),如下所示:
<form action="/Create" method="post"> <p> <%=Html.TextBox("Name") %> </p> <p> <%=Html.TextBox("Age")%> </p> </form>
在我的控制器上我有这些行动:
[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()方法总是使用默认值来生成文本框,其中对象的值返回不同的属性.现在,我不能想到一个真实世界的例子,为什么我想做这样的事情,但我仍然不明白为什么我总是最终有文本框填充模型的值在创建动作与AcceptVerbs(HttpVerbs.Get)属性.
注意:我尝试过Html.TextBox(“Name”,Model.Name),但结果仍然相同.而且我验证了使用AcceptVerbs(HttpVerbs.Post)创建操作实际上是通过ViewData将值传递给View来运行的.
此外,当我输出值为&%= Model.Name%>但再次,不在文本框上.
有没有什么明显的我失踪了,还是有这个行为背后的推理?