Pull to refresh

MVC 2: Строго типизированные Html-помощники

Reading time3 min
Views7.3K
Original author: Scott Gu
asp.net mvc 2Это первая часть из цикла статей о грядущих нововведениях в ASP.NET MVC 2, выход которого уже не за горами. Данный пост посвящен новым строго типизированным HTML-помощникам, добавленных в ASP.NET MVC 2.


Существующие Html-помощники


ASP.NET MVC шел вместе с набором HTML помощников, которые можно использовать в шаблонах вида, упрощая генерирование HTML UI. Например, для вывода тексового поля, вы можете написать код (в .aspx шаблоне вида), которые использует метод-помощник Html.TextBox():

image

Первый параметр метода-помощника принимает name/id текстового поля, второй — его value(значение). Метод-помощник сгенерирует HTML, вернув его браузеру:

image

Новые строго типизированные HTML-помощники


Одной из самых часто запрашиваемый возможностей второй версии была поддержка строго типизированных HTML-помощников, которые использую лямба-выражения, когда ссылаются на модели или модели вида, передаваемые в шаблон вида. Что позволяет производить проверку вида на момент компиляции, следовательно ошибки могут быть обнаружены не во время работы приложения. Также это улучшает поддержку intellisense в шаблона вида.

Теперь новые строго типизированные HTML-помощники являются неотъемлемой частью ASP.NET MVC 2. Данные методы используют правила именования по принципу «Html.HelperNameFor()». например: Html.TextBoxFor(), Html.CheckBoxFor(), Html.TextAreaFor() и т.п. Они подерживают лямбда-выражения для определения name/id и значения элемента.

Например, мы можем использовать новый помощник Html.TextBoxFor() в дополнение к Html.TextBox():

image

Заметьте, что нам не нужно больше определять строковый параметр «ProductName» — лямбда-выражения достаточно гибкие, чтобы мы могли возвращать оба имени свойства и поля в нашем объекте модели в дополнение к его значению.

В следствии строгой типизации HTML-помощника, мы получаем полную поддержку intellisense в Visual Studio, когда во время написания лямбда-выражений.

image

Сгенерированный HTML точно такой же, как у предыдущей показанной версии выше.

image

Список строго типизированных HTML-помощников, встроенных в ASP.NET MVC 2


HTML-помощники для элементов:
  • Html.TextBoxFor()
  • Html.TextAreaFor()
  • Html.DropDownListFor()
  • Html.CheckboxFor()
  • Html.RadioButtonFor()
  • Html.ListBoxFor()
  • Html.PasswordFor()
  • Html.HiddenFor()
  • Html.LabelFor()
Другие помощники:
  • Html.EditorFor()
  • Html.DisplayFor()
  • Html.DisplayTextFor()
  • Html.ValidationMessageFor()
Я расскажу о новых помощниках Html.EditorFor() и Html.DisplayFor() в следующей части, когда затрону тему auto-scaffold функциональности в ASP.NET MVC 2. Мы так же воспользуемся помощником Html.ValidationMessageFor(), когда рассмотрим тему валидации.

Строго типизированные HTML-помощники и scaffolding


Теперь VS 2008 и VS 2010 по умолчанию используют новые строго типизированные HTML-помощники, когда создает новый строго типизированные шаблоны вида, используя команду «Add View».

Например, давайте представим, что у нас есть простой класс «ProductsController», у которого метод действия «Edit», который в свою очередь генерирует форму редактирования для модели «Product»:

image

Мы можем нажать правой кнопкой по методу действия Edit в Visual Studio и выбрать пункт «Add View», для создания шаблона вида. Мы выберем создание «Edit» шаблона, через scaffolding, используя объект Product:

image

С ASP.NET MVC 2 шаблон вида, который создается по умолчанию, используя новые строго типизированные HTML-помощники для ссылки на объект модели Product:

image

Выводы


Новые строго типизированные HTML-помощники в ASP.NET MVC 2 предоставляют возможность получить улучшения: безопасность типов в ваших шаблонах вида, а также проверку вида на момент компиляции и поддержку intellisense, во время редактирования ваших шаблонов в Visual Studio.
Tags:
Hubs:
Total votes 38: ↑22 and ↓16+6
Comments20

Articles