Html.Textbox VS Html.TextboxFor

В чем разница между Html.Textbox и Html.TextboxFor?

Ответ 1

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

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

будут производить

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

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

Как правило, две вещи:

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

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

Ответ 2

TextBoxFor - это новое расширение ввода MVC, введенное в MVC2.

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

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

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

Ответ 3

IMO главное отличие состоит в том, что текстовое поле не сильно типизировано. Текстовое поле. Возьмите лямбда в качестве параметра, который сообщает помощнику элемент с моделью для использования в типизированном виде.

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

Ответ 4

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

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

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

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

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