Книга: ASP.NET MVC Framework

Вложенный управляющий код

Рассмотрим простейший пример — в представлении необходимо вывести таблицу, содержащую набор записей, переданных контроллером через коллекцию viewData. В качестве источника данных используется ставшая уже стандартом де-факто для примеров база данных Northwind, для доступа к которой используется LINQ для SQL, подробно описанный в главе 3.

В примере мы будем работать с классом Customer, упрощенное представление которого приведено в листинге 5.5.

Листинг 5.5. Класс Customer

public class Customer {
  public string CustomerlD {get; set;}
  public string CompanyName {get; set;}
  public string ContactName {get; set;}
  public string ContactTitle {get; set;}
  public string Address {get; set;}
  public string City {get; set;}
  public string Region {get; set;}
  public string PostalCode {get; set;}
  public string Country {get; set;}
  public string Phone {get; set;}
  public string Fax {get; set;}
  public EntitySet<CustomerCustomerDemo>
       CustomerCustomerDemos {get; set;}
  public EntitySet<Order> Orders {get; set;}
}

Данные передаются контроллером HomeController представлению Index.aspx через коллекцию viewData в качестве перечислимой коллекции, возвращаемой вспомогательным методом-оберткой над стандартными классами, созданными LINQ для SQL. Код, отвечающий непосредственно за получение данных, не представляет интереса для целей этого примера и не приводится.

public ActionResult Index()
{
  NorthwindDatabase db = new NorthwindDatabase();
  ViewData["Message"] = "Список сотрудников";
  ViewData["Customers"] =
        db.GetCustomers(c => c.CompanyName, 5);
  return View () ;
}

В результате представлению Index.aspx будет передана коллекция объектов типа Customer, которую требуется представить в виде таблицы. С использованием управляющего кода разметка представления может выглядеть так, как показано в листинге 5.6.

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

<%@ Page Language="C#"
         MasterPageFile="~/Views/Shared/Site.Master"
         Inherits="System.Web.Mvc.ViewPage" %>
<%@ Import Namespace="MvcViewsDemo.Models" %>
<asp:Content
    ContentPlaceHolderID="TitleContent" runat="server">
      Домашняя страница
</asp:Content>
<asp:Content ContentPlaceHolderID="MainContent" runat="server">
  <h2>
  <%= Html.Encode(ViewData ["Message"]) %></h2>
  <table>
  <thead>
    <tr>
      <th>
        Название компании
      </th>
     <th>
        Контактное лицо
      </th>
    </tr>
  </thead>
  <% foreach

       (Customer c in (IEnumerable<Customer>)ViewData["Customers"]

     ) { %>

   <tr>
     <td>
       <%= c.CompanyName %>
     </td>
     <td>
       <%= c.ContactName %>
     </td>
   </tr>
  <% } %>
  </table>
</asp:Content>

В результате выполнения примера приведенное ранее представление будет отображено в виде, показанном на рис. 5.1.


В тексте листинга 5.6 управляющие конструкции выделены полужирным шрифтом.

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

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

Оглавление статьи/книги

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