В чем разница между Html.Textbox и Html.TextboxFor?
Html.Textbox VS 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-помощники.