Html.Textbox VS Html.TextboxFor

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

最终他们都生产相同的HTML,但Html.TextBoxFor()是强types的,而Html.TextBox不是。

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

都会产生

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

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

一般有两件事情:

  1. 键入的TextBoxFor将为您生成input名称。 这通常只是属性名称,但是对于复杂types的属性可以包含一个下划线,如'customer_name'
  2. 使用键入的TextBoxFor版本将允许您使用编译时检查。 所以,如果你改变你的模型,那么你可以检查你的观点是否有任何错误。

通常认为使用MVC2中添加的HtmlHelpers的强types版本更好。

TextBoxFor是MVC2中引入的一个更新的MVCinput扩展。

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

看到这个页面。

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

国际海事组织的主要区别是,文本框不强types。 TextboxFor将一个lambda作为参数,告诉帮助者在一个types化视图中使用模型的with元素。

你可以对两者做同样的事情,但是如果可能的话,你应该使用types化的视图和TextboxFor。

Html.TextBox和Html.DropDownList不是强types的,因此它们不需要强types的视图。 这意味着我们可以硬编码任何我们想要的名字。 另一方面,Html.TextBoxFor和Html.DropDownListFor是强types的,并且需要一个强types的视图,名称是从lambdaexpression式中推断出来的。

强types的HTML帮助程序也提供编译时检查。

由于实时,我们大多使用强types的视图,所以更喜欢使用Html.TextBoxFor和Html.DropDownListFor在他们的对手。

无论我们使用Html.TextBox&Html.DropDownList还是Html.TextBoxFor&Html.DropDownListFor,最终结果都是一样的,那就是它们产生的是相同的HTML。

在MVC2中添加了强types的HTML帮助器。