Чтение онлайн

на главную - закладки

Жанры

Шрифт:

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

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

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

Рассмотрим простейший пример — в представлении необходимо вывести таблицу,

содержащую набор записей, переданных контроллером через коллекцию 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 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") %> ]

<% } %>

Вспомогательные методы

Поделиться:
Популярные книги

Русский орфографический словарь [А-Н]

Лопатин Владимир Владимирович
Справочная литература:
справочники
5.00
рейтинг книги
Русский орфографический словарь [А-Н]

Сумерки божков

Амфитеатров Александр Валентинович
1. Романы
Проза:
русская классическая проза
5.00
рейтинг книги
Сумерки божков

Статьи

Белинский Виссарион Григорьевич
Документальная литература:
критика
публицистика
5.00
рейтинг книги
Статьи

Печать Пожирателя 3

Соломенный Илья
3. Пожиратель
Фантастика:
городское фэнтези
аниме
сказочная фантастика
фэнтези
попаданцы
5.00
рейтинг книги
Печать Пожирателя 3

Нейромант. Трилогия «Киберпространство»

Гибсон Уильям
Фантастика:
боевая фантастика
киберпанк
5.00
рейтинг книги
Нейромант. Трилогия «Киберпространство»

Роканнон (сборник)

Ле Гуин Урсула Кребер
3. Вся Ле Гуин
Фантастика:
социально-философская фантастика
научная фантастика
7.00
рейтинг книги
Роканнон (сборник)

Неведомые поля (сборник)

Бигл Питер Сойер
Шедевры фантастики
Фантастика:
фэнтези
6.60
рейтинг книги
Неведомые поля (сборник)

Точка Бифуркации V

Смит Дейлор
5. ТБ
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Точка Бифуркации V

"Мистер Рипли" + Отдельные детективы и триллеры. Компиляция. Книги 1-12

Хайсмит Патриция
Детективы:
триллеры
5.00
рейтинг книги
Мистер Рипли + Отдельные детективы и триллеры. Компиляция. Книги 1-12

Замок Лорда Валентина

Силверберг Роберт
1. Маджипур
Научно-образовательная:
прочая научная литература
8.67
рейтинг книги
Замок Лорда Валентина

Приходи в прошлое

Тихая Лия
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Приходи в прошлое

Темное, кривое зеркало. Том 5 : Средь звезд, подобно гигантам.

Уильямс Гарэт Д.
5. Темное, кривое зеркало
Фантастика:
эпическая фантастика
альтернативная история
6.25
рейтинг книги
Темное, кривое зеркало. Том 5 : Средь звезд, подобно гигантам.

Театральная Энциклопедия

Неизвестен 3 Автор
Справочная литература:
словари
5.00
рейтинг книги
Театральная Энциклопедия

Путеводная звезда. Том 2

Извольский Сергей
7. Варлорд
Фантастика:
боевая фантастика
5.50
рейтинг книги
Путеводная звезда. Том 2