Html.Textbox VS Html.TextboxFor

Ответы:

118

В конечном итоге они оба создают один и тот же HTML, но Html.TextBoxFor () строго типизирован, а Html.TextBox - нет.

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

оба произведут

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

Так что это значит с точки зрения использования?

Обычно две вещи:

  1. Введенный текст TextBoxForсгенерирует для вас имена ввода. Обычно это просто имя свойства, но для свойств сложных типов может использоваться символ подчеркивания, например «имя_клиента».
  2. Использование типизированной TextBoxForверсии позволит вам использовать проверку времени компиляции. Поэтому, если вы измените свою модель, вы можете проверить, есть ли ошибки в ваших представлениях.

Обычно считается лучшей практикой использовать строго типизированные версии HtmlHelpers, которые были добавлены в MVC2 .

Дэвид Гленн
источник
16

Это TextBoxForновое расширение ввода MVC, представленное в MVC2.

Основным преимуществом новых строго типизированных расширений является отображение любых ошибок / предупреждений во время компиляции, а не во время выполнения.

См. Эту страницу.

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

iain
источник
7

ИМО, главное отличие в том, что Textbox не является строго типизированным. Textbox Для использования лямбда-выражения в качестве параметра, который сообщает помощнику, что элемент with модели должен использоваться в типизированном представлении.

Вы можете делать то же самое с обоими, но вы должны использовать типизированные представления и TextboxFor, когда это возможно.

Джонатан
источник
3

Html.TextBox и Html.DropDownList не являются строго типизированными и, следовательно, для них не требуется строго типизированное представление. Это означает, что мы можем жестко запрограммировать любое имя, какое захотим. С другой стороны, Html.TextBoxFor и Html.DropDownListFor строго типизированы и требуют строго типизированного представления, а имя выводится из лямбда-выражения.

Строго типизированные помощники HTML также обеспечивают проверку времени компиляции.

Поскольку в реальном времени мы в основном используем строго типизированные представления, мы предпочитаем использовать Html.TextBoxFor и Html.DropDownListFor, а не их аналоги.

Независимо от того, используем ли мы Html.TextBox и Html.DropDownList ИЛИ Html.TextBoxFor и Html.DropDownListFor, конечный результат будет одинаковым, то есть они создают один и тот же HTML.

В MVC2 добавлены строго типизированные помощники HTML.

Йогеш Ядав
источник