Шрифт:
Листинг 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") %> ]
<% } %>
Вспомогательные методы
Вспомогательные методы класса HtmlHelper, доступного как свойство Html для представлений и частичных представлений, уже неоднократно встречались в коде ранее. Теперь пришла пора рассмотреть подробнее, какую функциональность они несут и какие задачи решают.
Вспомогательные методы применяются тогда, когда необходимо многократно использовать какую-либо функциональность — от генерации часто применяемой разметки до реализации функциональности элементов управления, таких как кнопки, текстовые поля, гиперссылки и т. д.
Вспомогательным методом может быть любой статический метод, доступный на уровне представления, однако для упрощения общей структуры проектов MVC их принято группировать в рамках класса HtmlHelper. В табл. 5.1 приведен список основных вспомогательных методов класса HtmlHelper.
Таблица 5.1. Вспомогательные методы класса HtmlHelper
Большая часть вспомогательных методов реализованы как методы-расширения C# 3.0 для класса HtmlHelper (статические методы, определенные вне класса HtmlHelper). Такой подход был избран для того, чтобы разработчики легко могли расширять набор вспомогательных методов в собственных классах и не перегружать сам класс HtmlHelper.