Разница между Html.TextBox и Html.TextBoxFor

В чем разница между Html.TextBox и Html.TextBoxFor? Насколько я знаю, они производят одинаковый вывод html. Если я не пропущу что-то здесь. Пожалуйста, помогите мне с этим.

Ответ 1

Html.TextBox не строго типизирован и не требует строго типизированного представления, означающего, что вы можете жестко указать любое имя, которое хотите в качестве первого аргумента, и предоставить ему значение:

<%= Html.TextBox("foo", "some value") %>

Вы можете установить некоторое значение в словаре ViewData внутри действия контроллера, и помощник будет использовать это значение при рендеринге текстового поля (ViewData["foo"] = "bar").

Html.TextBoxFor требуется строго типизированное представление и использует модель представления:

<%= Html.TextBoxFor(x => x.Foo) %>

Помощник будет использовать выражение лямбда для вывода имени и значения модели представления, переданной в представление.

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

Ответ 2

Сильно типизированные расширения - это показывать любые ошибки или предупреждения во время компиляции, а не время выполнения. Посмотрите эту страницу, это разъяснит все ваши сомнения.