Html.Textbox VS Html.TextboxFor

时间:2011-05-06 08:04:59

标签: asp.net-mvc asp.net-mvc-3 razor

Html.Textbox和Html.TextboxFor有什么区别?

4 个答案:

答案 0 :(得分:112)

最终他们都生成相同的HTML,但Html.TextBoxFor()是强类型的,而Html.TextBox则不是。

1:  @Html.TextBox("Name")
2:  Html.TextBoxFor(m => m.Name)

都会产生

<input id="Name" name="Name" type="text" />

那么这在使用方面意味着什么?

一般有两件事:

  1. 键入的TextBoxFor将为您生成输入名称。这通常只是属性名称,但对于复杂类型的属性,可以包含下划线,例如“customer_name”
  2. 使用键入的TextBoxFor版本将允许您使用编译时检查。因此,如果您更改模型,则可以检查视图中是否存在任何错误。
  3. 通常认为使用added in MVC2的强类型HtmlHelper版本是更好的做法。

答案 1 :(得分:15)

TextBoxFor是MVC2中引入的较新的MVC输入扩展。

较新的强类型扩展的主要好处是在编译时而不是运行时显示任何错误/警告。

请参阅此页。

http://weblogs.asp.net/scottgu/archive/2010/01/10/asp-net-mvc-2-strongly-typed-html-helpers.aspx

答案 2 :(得分:6)

IMO的主要区别在于Textbox不是强类型的。 TextboxFor将lambda作为参数,告诉帮助者在类型化视图中使用模型的with元素。

你可以对两者做同样的事情,但你应该尽可能使用打字视图和TextboxFor。

答案 3 :(得分:3)

Html.TextBox和Html.DropDownList没有强类型,因此它们不需要强类型视图。这意味着我们可以硬编码我们想要的任何名称。另一方面,Html.TextBoxFor和Html.DropDownListFor是强类型的,需要强类型视图,名称是从lambda表达式推断出来的。

强类型HTML帮助程序还提供编译时检查。

因为我们实时使用强类型视图,所以更喜欢使用Html.TextBoxFor和Html.DropDownListFor。

是否,我们使用Html.TextBox&amp; Html.DropDownList或Html.TextBoxFor&amp; Html.DropDownListFor,最终结果是相同的,即它们产生相同的HTML。

MVC2中添加了强类型的HTML帮助程序。