Asp.net mvc Html.Textbox VS Html.TextboxFor

Asp.net mvc Html.Textbox VS Html.TextboxFor,asp.net-mvc,asp.net-mvc-3,razor,Asp.net Mvc,Asp.net Mvc 3,Razor,Html.Textbox和Html.TextboxFor之间有什么区别?文本框for是MVC2中引入的一个较新的MVC输入扩展 较新的强类型扩展的主要好处是在编译时而不是运行时显示任何错误/警告 请参阅本页 在我看来,主要区别在于文本框不是强类型的。TextboxFor将lambda作为参数,告诉帮助程序在类型化视图中使用模型的with元素 您可以使用这两种方法执行相同的操作,但应尽可能使用类型化视图和TextboxFor。最终,它们都生成相同的HTML,但在as不是的地方是强类型的 都会产生

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

文本框for是MVC2中引入的一个较新的MVC输入扩展

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

请参阅本页


在我看来,主要区别在于文本框不是强类型的。TextboxFor将lambda作为参数,告诉帮助程序在类型化视图中使用模型的with元素


您可以使用这两种方法执行相同的操作,但应尽可能使用类型化视图和TextboxFor。

最终,它们都生成相同的HTML,但在as不是的地方是强类型的

都会产生

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

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

通常有两件事:

  • 键入的
    TextBoxFor
    将为您生成输入名称。这通常只是属性名,但对于复杂类型的属性,可以包含下划线,如“customer\u name”
  • 使用键入的
    文本框for
    版本将允许您使用编译时检查。因此,如果更改模型,则可以检查视图中是否存在任何错误

  • 通常认为使用强类型版本的HTMLHelper是更好的做法。

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

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

    因为,在实时情况下,我们主要使用强类型视图,所以更喜欢使用Html.TextBoxFor和Html.DropDownListFor而不是它们的对应视图

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

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

    可能的副本的dup
    <input id="Name" name="Name" type="text" />