mvc HTML.Control和ControlFor(TextBox,复选框等)有什么区别..
答案 0 :(得分:2)
HTML帮助器方法的For
版本将属性作为强类型lambda表达式而不是字符串。
例如,以下to语句是等效的:
<%=Html.TextBox("Description") $>
<%=Html.TextBoxFor(m => m.Description) $>
但是,如果重命名Description
属性,TextBoxFor
调用将给出编译器错误,而TextBox
调用在您访问该页面之前不会失败。
答案 1 :(得分:2)
一个是强类型的。如果您的视图需要具有属性“CustomerName”的Customer类型的模型,则可以使用任一方式呈现值
<%=Html.Label("CustomerName") %>
<%=Html.LabelFor(a => a.CustomerName) %> //strongly typed
使用第二种方法(lambda表达式),可以避免使用魔术字符串。您还可以检查ModelMetadata以执行其他自定义。
在此处阅读模型元数据:
http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-2-modelmetadata.html
答案 2 :(得分:1)
以下文章解释了一般的差异:
http://weblogs.asp.net/scottgu/archive/2010/01/10/asp-net-mvc-2-strongly-typed-html-helpers.aspx
简单地说,HTML.ControlFor是强类型的,允许使用lambda表达式并自动获取指定为控件名称/ id的属性的名称。