Html.Textbox VS Html.TextboxFor

eya*_*alb 91 asp.net-mvc razor asp.net-mvc-3

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

Dav*_*enn 114

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

1:  @Html.TextBox("Name")
2:  Html.TextBoxFor(m => m.Name)
Run Code Online (Sandbox Code Playgroud)

都会产生

<input id="Name" name="Name" type="text" />
Run Code Online (Sandbox Code Playgroud)

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

一般有两件事:

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

通常认为使用MVC2添加的强类型HtmlHelper版本是一种更好的做法.


iai*_*ain 15

TextBoxFor是MVC2中引入的更新的MVC输入扩展.

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

看到这个页面.

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


Jon*_*han 6

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

你可以用两者做同样的事情,但是你应该尽可能使用类型化视图和TextboxFor.