Книга: ASP.NET MVC Framework

Шаблоны по умолчанию

Шаблоны по умолчанию

Для работы с шаблонами по умолчанию ASP.NET MVC предлагает несколько стандартных методов расширения:

? Html.LabelFor — производит рендеринг описательной информации для данных модели. По умолчанию выводит название поля модели;

? Html.DisplayFor — производит рендеринг значений данных модели в соответствии с их типом;

? Html.EditorFor — производит рендеринг элементов управления с данными модели для возможности редактирования.

Примечание

Кроме перечисленных стандартных методов расширения, в будущем планируется добавить методы: ValidationMessageFor, TextAreaFor, TextBoxFor, HiddenFor, DropDownListFor для соответствующей поддержки валидации и элементов управления в различных представлениях.

************************

Для всех этих методов расширения есть дополнительные методы LabelForModel, DisplayForModel и EditorForModel, которые являются сокращенным вариантом своих аналогов. Эти методы предназначены для рендеринга всей модели данных целиком без указания параметров.

Рассмотрим вариант рендеринга модели с помощью стандартных методов расширения. Для этого сформируем следующее представление (листинг 9.4).

Листинг 9.4. Модифицированное представление

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
  Inherits="System.Web.Mvc.ViewPage<TemplatedHelpersProj ect.Models.Product> " %>
<asp:Content ContentPlaceHolderID="TitleContent"
     runat="server">
  Info
</asp:Content>
<asp:Content ContentPlaceHolderID="MainContent"
     runat="server">
  <div>
    <fieldset>
      <legend>Информация</legend>
      <dl>
        <dt><%= Html.LabelFor(x => Model.Name) %></dt>
        <dd><%= Html.DisplayFor(x => Model.Name) %></dd>
        <dt><%= Html.LabelFor(x => Model.Cost) %></dt>
        <dd><%= Html.DisplayFor(x => Model.Cost) %></dd>
        <dt><%= Html.LabelFor(x => Model.Description) %></dt>
        <dd><%= Html.DisplayFor(x => Model.Description) %></dd>
      </dl>
    </fieldset>
  </div>
</asp:Content>

Результат работы данного кода представлен на рис. 9.7.

Обратите внимание, что с использованием методов Html.LabelFor и Html.EditorFor для каждого элемента модели мы получили возможность осуществлять рендеринг данных в таком виде, в котором нам бы этого хотелось. Вместо стандартной разметки с использованием <div>, которая производится при автоматическом рендеринге всей модели, мы использовали тег <dl> для представления только той ее части, которая нужна нам.


Оглавление книги


Генерация: 0.270. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз