Различия между Html.TextboxFor и Html.EditorFor в MVC и Razor
Почему по умолчанию они были изменены при добавлении нового «правого» представления? Какие преимущества при использовании EditorFor()
и TextboxFor()
?
я нашел это
По умолчанию на вкладках «Создать» и «Редактировать леса» вместо хелпера Html.TextBoxFor используется помощник Html.EditorFor. Это улучшает поддержку метаданных в модели в виде атрибутов annotations данных, когда диалоговое окно «Добавить вид» генерирует представление.
- Преобразование формата DateTime с использованием бритвы
- Имя «модель» не существует в текущем контексте в MVC3
- 'object' не содержит определения для 'X'
- Динамическая модель MVC Razor, «объект» не содержит определения для «PropertyName»,
- Определите, является ли загруженный файл изображением (любым форматом) в MVC
- Запись / вывод HTML-строк без сохранения
- Добавление classа css для выбора с помощью @ Html.DropDownList ()
- MVC Как отобразить изображение байтового массива из модели
- Как написать незакодированный Json для моего представления с помощью Razor?
- EditorTemplate для DropDownList
- Создайте раскрывающийся список для MVC3 с использованием Entity Framework (.edmx Model) и Razor Views && Вставьте запись базы данных в несколько таблиц
- asp.net MVC3 razor: отображение actionlink на основе роли пользователя
- Как визуализировать JavaScript в разделе MasterLayout с частичного просмотра?
Преимущества EditorFor
том, что ваш код не привязан к . Поэтому, если вы решите что-то изменить с точки зрения того, как ваши текстовые поля визуализируются, как обертывание их в
div
вы можете просто написать собственный шаблон редактора ( ~/Views/Shared/EditorTemplates/string.cshtml
) и все ваши текстовые ~/Views/Shared/EditorTemplates/string.cshtml
в приложении автоматически выиграет от этого изменения, тогда как если у вас есть Html.TextBoxFor
вам придется изменять его везде. Вы также можете использовать Data Annotations, чтобы контролировать способ визуализации.
TextBoxFor : он будет отображать как элемент ввода текста, соответствующий указанному выражению. В простом слове он всегда будет выглядеть как входной текстовый ящик независимо от типа данных свойства, который получает привязку с элементом управления.
EditorFor : Этот контроль немного умный. Он отображает разметку HTML на основе типа данных свойства. Например, предположим, что в модели есть булево свойство. Чтобы отобразить это свойство в представлении в качестве флажка, мы можем использовать CheckBoxFor или EditorFor. Оба будут генерировать одну и ту же разметку.
В чем преимущество использования редактора?
Как известно, в зависимости от типа данных свойства он генерирует html-разметку. Поэтому предположим, что завтра, если мы изменим тип данных в модели, не нужно ничего менять в представлении. EditorFor control автоматически изменяет разметку html.
Html.TextboxFor
всегда создает текстовое поле ( ).
Хотя EditorFor смотрит на тип и метаинформацию и может отображать другой элемент управления или шаблон, который вы поставляете.
Например, для свойств DateTime вы можете создать шаблон, который использует jQuery DatePicker.
Это одно из основных различий, не упомянутых в предыдущих комментариях:
Readonly
будет работать с Readonly
и оно не будет работать с EditorFor
.
@Html.TextBoxFor(model => model.DateSoldOn, new { @readonly = "readonly" })
Над кодом работает, где, как и после следующего, вы не можете контролировать только чтение .
@Html.EditorFor(model => model.DateSoldOn, new { @readonly = "readonly" })
Также существует небольшая разница в выходе html для строкового типа данных.
Html.EditorFor: Html.TextBoxFor: