HTML.Textbox VS Html.TextboxFor


Answers:


117

最终它们都产生了相同的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版本将允许您使用编译时间检查。因此,如果您更改模型,则可以检查视图中是否存在任何错误。

通常,最好使用在MVC2添加的HtmlHelpers的强类型版本。



7

IMO的主要区别是Textbox不是强类型的。TextboxFor接受一个lambda作为参数,该参数告诉助手在键入视图中使用的模型的with元素。

您可以对两者进行相同的操作,但应尽可能使用类型化视图和TextboxFor。


3

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

强类型的HTML帮助器还提供编译时间检查。

由于在实时情况下,我们主要使用强类型视图,因此与其相对应的视图相比,更喜欢使用Html.TextBoxFor和Html.DropDownListFor。

无论是使用Html.TextBox和Html.DropDownListFor还是Html.TextBoxFor和Html.DropDownListFor,最终结果都是相同的,即它们产生相同的HTML。

MVC2中添加了强类型HTML帮助器。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.