Asp.net mvc framework
Шрифт:
<% if (Request.IsAuthenticated) { %>
Добро пожаловать
<b><%= Html.Encode(Page.User.Identity.Name) %></b>!
[ <%= Html.ActionLink("Выход", "LogOff", "Account") %> ]
<%
} else {
%>
[ <%= Html.ActionLink("Вход", "LogOn", "Account") %> ]
<% } %>
Вспомогательные методы
Вспомогательные методы класса HtmlHelper,
Вспомогательные методы применяются тогда, когда необходимо многократно использовать какую-либо функциональность — от генерации часто применяемой разметки до реализации функциональности элементов управления, таких как кнопки, текстовые поля, гиперссылки и т. д.
Вспомогательным методом может быть любой статический метод, доступный на уровне представления, однако для упрощения общей структуры проектов MVC их принято группировать в рамках класса HtmlHelper. В табл. 5.1 приведен список основных вспомогательных методов класса HtmlHelper.
Таблица 5.1. Вспомогательные методы класса HtmlHelper
Большая часть вспомогательных методов реализованы как методы-расширения C# 3.0 для класса HtmlHelper (статические методы, определенные вне класса HtmlHelper). Такой подход был избран для того, чтобы разработчики легко могли расширять набор вспомогательных методов в собственных классах и не перегружать сам класс HtmlHelper.
Далее рассмотрено применение каждого из методов, описанных в табл. 5.1. Методы сгруппированы по сходству решаемых задач.
Кодирование текста и атрибутов
При выводе любого текста на страницу, либо в качестве значений атрибутов тегов необходимо обеспечить соответствие этого текста HTML-формату, заменив HTML-символы на их коды, чтобы браузер не интерпретировал выводимый текст как инструкции разметки страницы.
Кодирование текстов, полученных из неблагонадежных источников (добавленных пользователями, полученных от удаленных веб-служб и т. п.), необходимо для обеспечения безопасности пользователя, работающего со страницей, на которую выводятся эти тексты.
Для кодирования предназначены два вспомогательных метода — Html.AttributeEncode и Html.Encode.
Пример использования Html.AttributeEncode:
<div someattr="<%= Html.AttributeEncode("<b>Teкст</b>")"></div>
Результирующая разметка:
<div someattr="<b>Teкст</b>"></div>
Пример использования Html.Encode:
<div><%= Html.Encode("<b>Текст</b>")</div>
Результирующая разметка:
<div><b>TeKCT</b>"</div>
Примечание
Важно
отметить, что методы Html.AttributeEncode и Html.Encode не заменяют символ апострофа (') на соответствующий HTML-код, поскольку не рекомендуется использовать апострофы для атрибутов тегов на HTML-страницах, хотя это и допустимо с точки зрения HTML-стандарта.**********************************
Гиперссылки на действия контроллеров
Для создания гиперссылок на действия контроллеров используются два основных вспомогательных метода — Html.ActionLink и Html.RouteLink.
Html.ActionLink
Метод Html.ActionLink применяется для ссылок с использованием строковых значений. Например, для ссылки на действие Index, контроллера Home, именуемой "Главная страница", метод используется следующим образом:
Hnml.ActionLink("Главная страница", "Index", "Home")
Результирующая разметка:
<а href="#">Главная страница</а>
Для того чтобы передать параметры в строке запроса, методу ActionLink необходимо передать анонимный объект, содержащий значения параметров в свойствах объекта. При генерации гиперссылки будут учтены параметры маршрутов, зарегистрированных для приложения (подробная информация о маршрутизации приведена в главе 6).
Так, например, если для приложения определен только маршрут
{controller}/{action}/{id}, то следующий вызов метода ActionLink
Html.ActionLink("Ссылка", "Data", "Home", new { id = 1, ord = 2 })
приведет к генерации такой ссылки:
<a href="#">Ссылка</a>
Если же среди маршрутов определен, например, и такой {controller}/{action}/{id}/{ord}, то будет сгенерирована следующая ссылка:
<a href="#">Сcылка</a>
Для создания абсолютной ссылки, либо ссылки с дополнительными параметрами, такими как протокол, якорь, также можно воспользоваться методом ActionLink.
Html.ActionLink("Сайт microsoft.com", "Express", "VStudio",
"http", "microsoft.com", "download", new {}, null);
В результате будет создана следующая ссылка:
<a href="#">
Сайт microsoft.com</a>
Html. RouteLink
Метод Html.RouteLink используется для создания ссылок на основании определенных для приложения маршрутов, о которых подробнее можно узнать в следующей главе. Так, например, можно сослаться на определенный именованный маршрут, передав параметры в виде анонимного объекта.
Html.RouteLink("Ссылка", "MyRoute",