Почему по умолчанию они были изменены при добавлении нового представления «Изменить»? Какие преимущества при использовании EditorFor()
против TextboxFor()
?
я нашел это
По умолчанию скаффолды Create и Edit теперь используют помощник Html.EditorFor вместо помощника Html.TextBoxFor. Это улучшает поддержку метаданных в модели в форме атрибутов аннотаций данных, когда диалоговое окно «Добавить представление» создает представление.
asp.net-mvc
asp.net-mvc-3
razor
ShaneKm
источник
источник
Ответы:
Преимущества в
EditorFor
том, что ваш код не привязан к<input type="text"
. Поэтому, если вы решите что-то изменить в соответствии с тем, как визуализируются ваши текстовые поля, например обернуть их в,div
вы можете просто написать собственный шаблон редактора (~/Views/Shared/EditorTemplates/string.cshtml
), и все ваши текстовые поля в вашем приложении автоматически получат выгоду от этого изменения, тогда как если вы жестко закодировалиHtml.TextBoxFor
вас придется модифицировать его везде. Вы также можете использовать аннотации данных, чтобы контролировать способ визуализации.источник
TextBoxFor : будет отображаться как элемент ввода текста html, соответствующий указанному выражению. Проще говоря, он всегда будет отображаться как текстовое поле ввода независимо от типа данных свойства, которое связывается с элементом управления.
EditorFor : этот элемент управления немного умен. Он отображает HTML-разметку на основе типа данных свойства. Например, предположим, что в модели есть логическое свойство. Чтобы отобразить это свойство в виде флажка, мы можем использовать CheckBoxFor или EditorFor. Оба будут генерировать одинаковую разметку.
В чем преимущество использования EditorFor?
Как мы знаем, в зависимости от типа данных свойства генерируется html-разметка. Поэтому предположим, что завтра, если мы изменим тип данных свойства в модели, нет необходимости что-либо менять в представлении. Элемент управления EditorFor автоматически изменит HTML-разметку.
источник
Html.TextboxFor
Всегда создает текстовое поле (<input type="text" ...
).В то время как EditorFor просматривает тип и метаинформацию и может отображать другой элемент управления или шаблон, который вы предоставляете.
Например, для свойств DateTime вы можете создать шаблон, который использует jQuery DatePicker.
источник
implement jquery datepicker
и с помощью егоEditorFor
находится здесьЭто одно из основных отличий, не упомянутых в предыдущих комментариях:
Readonly
свойство будет работать с текстовым полем и не будет работать с нимEditorFor
.Вышеприведенный код работает, где, как и в случае со следующим, вы не можете сделать управление доступным только для чтения .
источник
Существует также небольшая разница в выводе html для строкового типа данных.
источник