Различия между Html.TextboxFor и Html.EditorFor в MVC и Razor



почему по умолчанию они были изменены при добавлении нового представления "редактировать"? Какие преимущества при использовании EditorFor() и TextboxFor()?



Я нашел это




по умолчанию для создания и редактирования лесов теперь используется Html.EditorFor helper вместо Html.TextBoxFor helper. Это улучшает поддержку метаданных на модели в виде
атрибуты аннотации данных, когда диалоговое окно "добавление вида" создает вид.


660   5  

5 ответов:

преимущества EditorFor Это то, что ваш код не привязан к <input type="text". Поэтому, если вы решите изменить что-то в аспекте того, как ваши текстовые поля отображаются, как обертывание их в div вы можете просто написать пользовательский шаблон редактора (~/Views/Shared/EditorTemplates/string.cshtml) и все ваши текстовые поля в вашем приложении автоматически выиграют от этого изменения, тогда как если вы жестко закодированы Html.TextBoxFor вам придется изменить его везде. Вы также можете использовать аннотации данных для управления этим способом оказанный.

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

EditorFor: этот элемент управления немного умный. Он отображает разметку HTML на основе типа данных свойства. Например, предположим, что в модели есть булево свойство. Чтобы отобразить это свойство в представлении в виде флажка либо мы можем использовать CheckBoxFor или EditorFor. Оба будут генерировать одну и ту же разметку.

в чем преимущество использования в?

Как мы знаем, в зависимости от типа данных свойства он генерирует разметку html. Поэтому предположим, что завтра, если мы изменим тип данных свойства в модели, не нужно ничего менять в представлении. EditorFor control автоматически изменит разметку html.

The Html.TextboxFor всегда создает текстовое поле (<input type="text" ...).

в то время как EditorFor смотрит на тип и метаинформацию и может отображать другой элемент управления или шаблон, который вы предоставляете.

например, для свойств DateTime можно создать шаблон, который использует jQuery DatePicker.

Это одно из основных отличий, не упомянутых в предыдущих комментариях:
Readonly свойство будет работать с текстовым полем для и он не будет работать с EditorFor.

@Html.TextBoxFor(model => model.DateSoldOn, new { @readonly = "readonly" })

выше код работает, где, как и в следующем вы не можете сделать контроль над только для чтения.

@Html.EditorFor(model => model.DateSoldOn, new { @readonly = "readonly" })

существует также небольшая разница в выводе html для строкового типа данных.

Html.EditorFor:  
<input id="Contact_FirstName" class="text-box single-line" type="text" value="Greg" name="Contact.FirstName">

Html.TextBoxFor:
<input id="Contact_FirstName" type="text" value="Greg" name="Contact.FirstName">

Comments

    Ничего не найдено.