HtmlHelper.EditorFor против Html.TextBox против ввода HTML - PullRequest
9 голосов
/ 25 августа 2011

В настоящее время я смачиваю ноги ASP.NET MVC 3 с Razor, и меня немного смущает наиболее подходящий способ визуализации элементов ввода HTML.

На мой взгляд, существует 3 способа визуализации этих элементов для свойства модели:

  1. Использование метода HtmlHelper EditorFor
  2. Использование метода Html.TextBox (для строковых или числовых значений)
  3. Использование простого старого элемента ввода html и использование встроенных тегов Razor для помещения значения в элемент.

Какой рекомендуемый метод для этого? Меня немного беспокоит метод EditorFor, так как я не имею никакого контроля над отображаемым HTML, и я подумал, что одна из целей почтовой системы MVC - избежать чрезмерной абстракции WebForms.

Что ты думаешь? Какова лучшая практика для этого?

спасибо!

Ответы [ 3 ]

5 голосов
/ 25 августа 2011

Html.EditorFor является предпочтительным способом.Вы можете управлять HTML, написав пользовательские шаблоны редактора для данного типа. ModelMetadata позволяет вам контролировать тип сгенерированного поля ввода.Если вам нужно применить дополнительные пользовательские атрибуты, вы также можете написать поставщик пользовательских метаданных .

1 голос
/ 25 августа 2011

У вас действительно есть контроль над HTML, сгенерированным EditorFor: вы можете создавать собственные шаблоны для каждого типа .

EditorFor имеет некоторые явные преимущества, когда вы хотите сделать что-то более сложное, чем просто текстовое поле. У меня есть случай, когда мне нужен редактор для "штатного" имущества. Так что мой шаблон EditorFor создает выпадающий список со списком сотрудников, выбирает правильный, а затем также добавляет текстовое поле с некоторым Javascript, используемым для фильтрации списка по фамилии (так как он довольно длинный). Я мог бы сделать это вручную, но почему? Мой взгляд просто вызывает EditorFor (как угодно), и шаблон вызывается. В результате код очень чистый.

Поэтому я советую использовать EditorFor, если у вас нет конкретного случая, когда имеет смысл этого не делать. Если вы решите настроить свои редакторы позже, все, что вам нужно сделать, это изменить шаблон для типа и вуаля! Хороший пример для свиданий. Базовый EditorFor - это просто текстовое поле, но довольно легко создать собственный шаблон, который подключает средство выбора даты jQuery. Вы можете сделать это позже, не меняя ни одно из своих представлений, чтобы воспользоваться им, если вы используете EditorFor, чего нельзя сделать, если вы делаете все это встраиваемым в текстовые поля HTML.

0 голосов
/ 25 августа 2011

Лучший способ - HTML.EditorFor, так как вы можете создавать шаблоны редакторов для данного типа, а также ваша форма будет автоматически привязываться к вашему объекту ModelView при отправке формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...