Это первая часть из цикла статей о грядущих нововведениях в ASP.NET MVC 2, выход которого уже не за горами. Данный пост посвящен новым строго типизированным HTML-помощникам, добавленных в ASP.NET MVC 2.
ASP.NET MVC шел вместе с набором HTML помощников, которые можно использовать в шаблонах вида, упрощая генерирование HTML UI. Например, для вывода тексового поля, вы можете написать код (в .aspx шаблоне вида), которые использует метод-помощник Html.TextBox():
Первый параметр метода-помощника принимает name/id текстового поля, второй — его value(значение). Метод-помощник сгенерирует HTML, вернув его браузеру:
Одной из самых часто запрашиваемый возможностей второй версии была поддержка строго типизированных HTML-помощников, которые использую лямба-выражения, когда ссылаются на модели или модели вида, передаваемые в шаблон вида. Что позволяет производить проверку вида на момент компиляции, следовательно ошибки могут быть обнаружены не во время работы приложения. Также это улучшает поддержку intellisense в шаблона вида.
Теперь новые строго типизированные HTML-помощники являются неотъемлемой частью ASP.NET MVC 2. Данные методы используют правила именования по принципу «Html.HelperNameFor()». например: Html.TextBoxFor(), Html.CheckBoxFor(), Html.TextAreaFor() и т.п. Они подерживают лямбда-выражения для определения name/id и значения элемента.
Например, мы можем использовать новый помощник Html.TextBoxFor() в дополнение к Html.TextBox():
Заметьте, что нам не нужно больше определять строковый параметр «ProductName» — лямбда-выражения достаточно гибкие, чтобы мы могли возвращать оба имени свойства и поля в нашем объекте модели в дополнение к его значению.
В следствии строгой типизации HTML-помощника, мы получаем полную поддержку intellisense в Visual Studio, когда во время написания лямбда-выражений.
Сгенерированный HTML точно такой же, как у предыдущей показанной версии выше.
HTML-помощники для элементов:
Теперь VS 2008 и VS 2010 по умолчанию используют новые строго типизированные HTML-помощники, когда создает новый строго типизированные шаблоны вида, используя команду «Add View».
Например, давайте представим, что у нас есть простой класс «ProductsController», у которого метод действия «Edit», который в свою очередь генерирует форму редактирования для модели «Product»:
Мы можем нажать правой кнопкой по методу действия Edit в Visual Studio и выбрать пункт «Add View», для создания шаблона вида. Мы выберем создание «Edit» шаблона, через scaffolding, используя объект Product:
С ASP.NET MVC 2 шаблон вида, который создается по умолчанию, используя новые строго типизированные HTML-помощники для ссылки на объект модели Product:
Новые строго типизированные HTML-помощники в ASP.NET MVC 2 предоставляют возможность получить улучшения: безопасность типов в ваших шаблонах вида, а также проверку вида на момент компиляции и поддержку intellisense, во время редактирования ваших шаблонов в Visual Studio.
Существующие Html-помощники
ASP.NET MVC шел вместе с набором HTML помощников, которые можно использовать в шаблонах вида, упрощая генерирование HTML UI. Например, для вывода тексового поля, вы можете написать код (в .aspx шаблоне вида), которые использует метод-помощник Html.TextBox():
Первый параметр метода-помощника принимает name/id текстового поля, второй — его value(значение). Метод-помощник сгенерирует HTML, вернув его браузеру:
Новые строго типизированные HTML-помощники
Одной из самых часто запрашиваемый возможностей второй версии была поддержка строго типизированных HTML-помощников, которые использую лямба-выражения, когда ссылаются на модели или модели вида, передаваемые в шаблон вида. Что позволяет производить проверку вида на момент компиляции, следовательно ошибки могут быть обнаружены не во время работы приложения. Также это улучшает поддержку intellisense в шаблона вида.
Теперь новые строго типизированные HTML-помощники являются неотъемлемой частью ASP.NET MVC 2. Данные методы используют правила именования по принципу «Html.HelperNameFor()». например: Html.TextBoxFor(), Html.CheckBoxFor(), Html.TextAreaFor() и т.п. Они подерживают лямбда-выражения для определения name/id и значения элемента.
Например, мы можем использовать новый помощник Html.TextBoxFor() в дополнение к Html.TextBox():
Заметьте, что нам не нужно больше определять строковый параметр «ProductName» — лямбда-выражения достаточно гибкие, чтобы мы могли возвращать оба имени свойства и поля в нашем объекте модели в дополнение к его значению.
В следствии строгой типизации HTML-помощника, мы получаем полную поддержку intellisense в Visual Studio, когда во время написания лямбда-выражений.
Сгенерированный HTML точно такой же, как у предыдущей показанной версии выше.
Список строго типизированных 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-помощники и scaffolding
Теперь VS 2008 и VS 2010 по умолчанию используют новые строго типизированные HTML-помощники, когда создает новый строго типизированные шаблоны вида, используя команду «Add View».
Например, давайте представим, что у нас есть простой класс «ProductsController», у которого метод действия «Edit», который в свою очередь генерирует форму редактирования для модели «Product»:
Мы можем нажать правой кнопкой по методу действия Edit в Visual Studio и выбрать пункт «Add View», для создания шаблона вида. Мы выберем создание «Edit» шаблона, через scaffolding, используя объект Product:
С ASP.NET MVC 2 шаблон вида, который создается по умолчанию, используя новые строго типизированные HTML-помощники для ссылки на объект модели Product:
Выводы
Новые строго типизированные HTML-помощники в ASP.NET MVC 2 предоставляют возможность получить улучшения: безопасность типов в ваших шаблонах вида, а также проверку вида на момент компиляции и поддержку intellisense, во время редактирования ваших шаблонов в Visual Studio.