我从MVC2开始,我有一个简单的问题:
如果我有一个带有表单的打字视图,并且这个文本框是用lambda表达式创建的:
<%: Html.TextBoxFor(e => e.Name)%>
当我提交此表单时,默认模型绑定器会获取请求表单,将模型键入视图,序列化发布的数据(作为此模型)并将其传递给我的控制器的操作。
为了更好地解释自己,让我们想象一下我有一个像localhost / edittestmodel / ID / 1的网址,我在我的控制器操作中有以下代码:
public ActionResult Edit(int id)
{
TestModel testmodel=new TestModel();
testmodel.Name="texttorenderintotextbox";
//whats the class that place the testmodel properties into the view?
return View(testmodel);
}
将testmodel对象的Name属性放入文本框的责任类是什么
<%: Html.TextBoxFor(e => e.Name)%>
提前致谢。
最诚挚的问候。
何。
答案 0 :(得分:1)
负责从lambda表达式生成输入字段的TextBoxFor辅助方法。
答案 1 :(得分:0)
当您拥有强类型视图时,模型类型几乎不能用于在视图代码中使用简单的代码智能感知(因此您可以像示例中一样使用lambda表达式)。
但是当您回发POST数据时,不会对视图进行任何检查。但是它会根据控制器操作参数进行检查。如果有一个具有特定自定义模型绑定器类型的参数,则使用该特定模型绑定器来处理传入数据。
但要回答您的问题:TextBoxFor
检查您的强类型视图的模型,并生成具有正确名称属性的特定文本框。因此,来自它的数据将以正确的表单字段名称发回。
更进一步。它是视图引擎,它解析视图的ASPX代码并运行所有服务器端脚本,包括Html.TextBoxFor()
调用。