Частичные представления

Ранее в этой главе уже говорилось об использовании частичных представлений. Механизм частичных представлений позволяет многократно использовать разметку в разных методах контроллеров, аналогично примеру из листингов 5.1—5.3. Кроме того, частичные представления могут быть использованы для отображения списков элементов. Так, в листинге 5.15 приведено частичное представление, которое используется для отображения строк таблицы товаров в представлении Index.aspx, код которого приведен в листинге 5.16.

Листинг 5.15. Частичное представление ProductListItem.ascx

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<

                        MvcViewsDemo.Models.Product>" %>

<tr>

  <td>

    <%= Html.ActionLink("Изменить", "Edit", new { id=Model.ProductID }) %>

  </td>

  <td>

    <%= Html.Encode(Model.ProductID)%>

  </td>

  <td>

    <%= Html.Encode(Model.ProductName)%>

  </td>

  <td>

    <%= Html.Encode(String.Format("{0:F}", Model.UnitPrice))%>

  </td>

  <td>

    <%= Html.Encode(Model.UnitsInStock)%>

  </td>

  <td>

    <%= Html.Encode(Model.UnitsOnOrder)%>

  </td>

</tr>

Листинг 5.16. Представление Index.aspx

<%@ Page Title="" Language="C#"

         MasterPageFile="~/Views/Shared/Site.Master"

         Inherits="System.Web.Mvc.ViewPage<IEnumerable<

                      MvcViewsDemo.Models. Product»" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent"

             runat="server">

  Список товаров

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent"

             runat="server">

  <h2>

    Список товаров

  </h2>

  <table>

    <tr>

      <th>

      </th>

      <th>

        Код товара </th>

      <th>

        Название

      </th>

      <th>

        Цена

      </th>

      <th>

        На складе

      </th>

      <th>

        Заказано

      </th>

    </tr>

    <% foreach (var item in Model)

    { %>

      <% Html.RenderPartial("ProductListItem", item); %>

    <% } %>

  </table>

</asp:Content>

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