Книга: ASP.NET MVC Framework

Строгая типизация данных представления

Строгая типизация данных представления

Работа с произвольным набором элементов удобна, когда набор данных, отображаемых представлением, меняется в процессе развития проекта. Однако в случаях, когда все данные представления могут быть описаны одним классом, значительно удобнее использовать строго типизированные представления. Для этого коллекция ViewData предоставляет свойство ViewData.Model и возможность строгой типизации представления путем наследования самого класса представления от класса ViewPage<T>. В листинге 5.4 представлена разметка строго типизированного представления.

Листинг 5.4. Представление ViewDataModelStronglyTyped.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
  Inherits="System.Web.Mvc.ViewPage<MvcViewsDemo.Models.Customer>" %>
<asp:Content ContentPlaceHolderID="TitleContent" runat="server">
  ViewDataModelStronglyTyped
</asp:Content>
<asp:Content ContentPlaceHolderID="MainContent" runat="server">
  <h2>
    ViewDataModelStronglyTyped
  </h2>
  <fieldset>
    <legend>Fields</legend>
    <p>
      CompanyName:
      <%= Html.Encode(Model.CompanyName) %>
    </p>
    <p>
      ContactName:
      <%= Html.Encode(Model.ContactName) %>
    </p>
    <p>
      ContactTitle:
      <%= Html.Encode(Model.ContactTitle) %>
    </p>
    <p>
      Address:
      <%= Html.Encode(Model.Address) %>
    </p>
  </fieldset>
</asp:Content>

С точки зрения контроллера, для работы со строго типизированным представлением достаточно присвоить объект свойству ViewData.Model либо передать объект в качестве параметра методу View ().

public ActionResult ViewDataModelStronglyTyped()
{
  NorthwindDatabase db = new NorthwindDatabase();
  return View(db.GetCustomers().First());
}

В случае нестрого типизированного представления объект также может быть передан в свойство ViewData.Model, однако это не имеет практической пользы, поскольку на стороне представления все равно придется выполнять приведение типов для свойств этого объекта.

Преимущества строго типизированного представления очевидны — поддержка подсказки IntelliSense при разработке представлений в Visual Studio, возможность генерации заготовок представлений средствами Visual Studio, как это было выполнено для представления, приведенного в листинге 5.4.

В строго типизированном представлении также доступна коллекция объектов viewData, поэтому даже при использовании строгой типизации количество элементов данных, используемых представлением, может быть модифицировано при развитии проекта.

Некоторые разработчики предпочитают для каждого из представлений создавать отдельный класс данных, с помощью которого типизировать представления. Некоторые же предпочитают использовать строгую типизацию только для того, чтобы передавать объекты в частичные представления, работая с коллекцией viewData в разметке самих представлений. Выбор определяется предпочтениями разработчиков проекта.

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


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