В чем разница между Html.Textbox и Html.TextboxFor?
В чем разница между Html.Textbox и Html.TextboxFor?
Ответы:
В конечном итоге они оба создают один и тот же 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 .
Это TextBoxFor
новое расширение ввода MVC, представленное в MVC2.
Основным преимуществом новых строго типизированных расширений является отображение любых ошибок / предупреждений во время компиляции, а не во время выполнения.
См. Эту страницу.
http://weblogs.asp.net/scottgu/archive/2010/01/10/asp-net-mvc-2-strongly-typed-html-helpers.aspx
ИМО, главное отличие в том, что Textbox не является строго типизированным. Textbox Для использования лямбда-выражения в качестве параметра, который сообщает помощнику, что элемент with модели должен использоваться в типизированном представлении.
Вы можете делать то же самое с обоими, но вы должны использовать типизированные представления и TextboxFor, когда это возможно.
Html.TextBox и Html.DropDownList не являются строго типизированными и, следовательно, для них не требуется строго типизированное представление. Это означает, что мы можем жестко запрограммировать любое имя, какое захотим. С другой стороны, Html.TextBoxFor и Html.DropDownListFor строго типизированы и требуют строго типизированного представления, а имя выводится из лямбда-выражения.
Строго типизированные помощники HTML также обеспечивают проверку времени компиляции.
Поскольку в реальном времени мы в основном используем строго типизированные представления, мы предпочитаем использовать Html.TextBoxFor и Html.DropDownListFor, а не их аналоги.
Независимо от того, используем ли мы Html.TextBox и Html.DropDownList ИЛИ Html.TextBoxFor и Html.DropDownListFor, конечный результат будет одинаковым, то есть они создают один и тот же HTML.
В MVC2 добавлены строго типизированные помощники HTML.