【发布时间】:2013-11-21 22:34:24
【问题描述】:
我有一个类似...的表格
@using (Html.BeginForm("create", "Account", FormMethod.Post, new { id = "accountform_form" }))
{
@Html.TextBoxFor(e => e.ShipFirstName)
...
}
在测试时,我惊讶地发现该字段在回发时保留了它的值,即使我没有将它分配给视图模型。使用调试器,ShipFirstName 的值在返回视图时在操作结束时是null,那么为什么它会显示字段中的值?我一直在不必要地将发布的值分配给视图模型属性吗?还是有其他事情发生?
更新:动作是这样的......
[HttpPost]
public ViewResult Create(AccountFormModel postModel)
{
var model = new AccountFormModel(postModel, stuff, stuff); //I use posted values and paramters to create the actual view model
return view(model);
}
所以,我看到GET 表单,输入值,假设我输入了一个字段并将必填字段留空,提交,结果页面具有我在另一个字段中输入的值,当在型号是null?
【问题讨论】:
-
这就是模型绑定器的作用。
-
No MVC 不会自动填充任何内容,您是在告诉它通过调用 TextBoxFor 用您的视图模型填充字段
-
但在动作的最后一步,
return view(model)model.ShipFirstName为空
标签: c# asp.net-mvc http-post