Asp.net mvc framework
Шрифт:
Рассмотрим каждый из подходов подробно на практическом примере, и по мере изложения материала будем создавать работающее демонстрационное приложение, использующее разобранные ранее возможности.
*****************************************
Вложенный управляющий код
Рассмотрим простейший пример — в представлении необходимо вывести таблицу,
В примере мы будем работать с классом 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 ID="indexTitle"
ContentPlaceHolderID="TitleContent" runat="server">
Домашняя страница
</asp:Content>
<asp:Content ID="indexContent" 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 управляющие конструкции выделены полужирным шрифтом.
Как было отмечено ранее, при создании разметки представления могут быть использованы два типа управляющих конструкций, описанные далее.
<%= значение %>
Конструкция вида <%= значение %> используется для вывода значений в результирующий код HTML-разметки. Тип значения может быть любым, который может быть приведен к строке. Значение будет выведено именно в том месте разметки, в котором оно размещено.
<% управляющая конструкция %>
Управляющие инструкции позволяют проверять выполнение некоторых условий для вывода той или иной HTML-разметки (условия) либо многократно повторять фрагменты HTML-разметки (циклы).
Оформляются управляющие конструкции по приведенному далее шаблону.
<% инструкция (условия) { %>
Произвольный HTML-код, который может
перемежаться другими
управляющими инструкциями
<% } %>
Пример использования цикла приведен в листинге 5.6, применение условий выглядит аналогично:
<% if (Request.IsAuthenticated) { %>
Добро пожаловать
<b><%= Html.Encode(Page.User.Identity.Name) %></b>!
[ <%= Html.ActionLink("Выход", "LogOff", "Account") %> ]
<%
} else {
%>
[ <%= Html.ActionLink("Вход", "LogOn", "Account") %> ]
<% } %>
Вспомогательные методы
Русский орфографический словарь [А-Н]
Справочная литература:
справочники
рейтинг книги
Сумерки божков
1. Романы
Проза:
русская классическая проза
рейтинг книги
Статьи
Документальная литература:
критика
публицистика
рейтинг книги
Печать Пожирателя 3
3. Пожиратель
Фантастика:
городское фэнтези
аниме
сказочная фантастика
фэнтези
попаданцы
рейтинг книги
Нейромант. Трилогия «Киберпространство»
Фантастика:
боевая фантастика
киберпанк
рейтинг книги
Роканнон (сборник)
3. Вся Ле Гуин
Фантастика:
социально-философская фантастика
научная фантастика
рейтинг книги
Неведомые поля (сборник)
Шедевры фантастики
Фантастика:
фэнтези
рейтинг книги
Точка Бифуркации V
5. ТБ
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
"Мистер Рипли" + Отдельные детективы и триллеры. Компиляция. Книги 1-12
Детективы:
триллеры
рейтинг книги
Замок Лорда Валентина
1. Маджипур
Научно-образовательная:
прочая научная литература
рейтинг книги
Приходи в прошлое
Любовные романы:
любовно-фантастические романы
рейтинг книги
Темное, кривое зеркало. Том 5 : Средь звезд, подобно гигантам.
5. Темное, кривое зеркало
Фантастика:
эпическая фантастика
альтернативная история
рейтинг книги
Театральная Энциклопедия
Справочная литература:
словари
рейтинг книги