Книга: ASP.NET MVC Framework
Мастерские страницы и элементы управления
Мастерские страницы и элементы управления
Из WebForms в механизм представлений в MVC пришел и подход к повторному использованию общей разметки страниц — мастерские страницы (master pages), файлы которых имеют расширение master. Мастерские страницы представляют собой инструмент для определения общего шаблона набора страниц, определяя общую разметку для набора контентных страниц и расположение блоков, содержащихся в контентных страницах.
Принцип построения мастерской страницы следующий:
1. Задается общий дизайн страницы и блоки, общие для набора страниц.
2. В разметке мастерской страницы определяются блоки, которые будут заполнены содержимым контентных страниц с помощью разметки:
<asp:ContentPlaceHolder runat="server" />
Пример мастерской страницы приведен в листинге 5.1.
3. При создании разметки контентных страниц используются блоки:
<asp:Content ContentPlaceHolderID="ContentPageId" runat="server">
где ContentPlaceHolderID
соответствует тому фрагменту мастерской страницы, который помечен элементом ContentPlaceHolder
с соответствующим свойством id
. Пример контентной страницы приведен в листинге 5.2.
Листинг 5.1. Пример мастерской страницы
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>
<asp:ContentPlaceHolder runat="server" />
</title>
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div>
<div>
<div>
<h1>
Northwind
</h1>
</div>
<div>
<% Html.RenderPartial("LogOnUserControl"); %> </div>
<div>
<ul>
<li>
<%= Html.ActionLink("Домашняя", "Index",
"Home")%>
</li>
<li>
<%= Html.ActionLink("O сайте", "About",
"Home")%>
</li>
</ul>
</div>
</div>
<div>
<asp:ContentPlaceHolder runat="server" /> <div>
</div>
</div>
</div>
</body>
</html>
Листинг 5.2. Пример контентной страницы
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ContentPlaceHolderID="TitleContent" runat="server">
о проекте
</asp:Content>
<asp:Content ContentPlaceHolderID="MainContent" runat="server">
<h2>
О проекте
</h2>
<p>
Тут что-то написано.
</p>
</asp:Content>
Мастерские страницы могут быть вложенными, т. е. в свою очередь использовать мастерские страницы. Это может быть полезно, когда существует общая планировка всех страниц на сайте (родительская мастерская страница) и несколько вариантов планировки дизайна вложенных разделов (дочерние мастерские страницы).
На контентной странице могут быть заданы несколько блоков Content
, соответствующих блокам ContentPlaceHolder
, определенным на мастерской странице.
Еще одним механизмом повторного использования разметки являются пользовательские элементы управления или, в терминах MVC, частичные представления. Частичные представления — это фрагменты разметки, вынесенные в отдельный файл с расширением ascx, которые могут быть использованы на страницах представлений через вызов метода RenderPartial()
класса HtmlHelper
. О классе Html
и его методах подробнее рассказано далее в этой главе. Ранее в листинге 5.1 приведен пример отображения частичного представления LogOnUserControl.ascx (<% Html.RenderPartial("LogCnUserControl"); %>
).
Частичное представление содержит ту же самую разметку и строится по тем же принципам, что и представление. Пример разметки упомянутого ранее частичного представления LogOnUserControl.ascx показан в листинге 5.3. Разметка, приведенная в листинге 5.3, подробно рассматривается далее.
Листинг 5.3. Разметка частичного представления LogOnUserControl.ascx
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%
if (Request.IsAuthenticated) {
%>
Добро пожаловать <b><%= Html.Encode(Page.User.Identity.Name)
%></b>!
[ <%= Html.ActionLink("Выход", "LogOff", "Account") %> ]
<%
}
else {
%>
[ <%= Html.ActionLink("Вход", "LogOn", "Account") %> ]
<%
}
%>
Частичные представления могут быть использованы также при создании многократно используемых функциональных блоков на разных страницах (часто называемых гаджетами), о которых речь пойдет в конце этой главы.
- Информация заголовочной страницы (Database header)
- Основные "рычаги" управления производительностью
- Размер страницы базы данных
- Категорийный менеджмент. Курс управления ассортиментом в рознице
- Дополнительные национальные кодовые страницы и порядки сортировки
- 6.4. Рабочий лист Excel и его структурные элементы
- 1. Системы управления базами данных
- 4.4. Логические элементы и синтез логических схем
- 4.7 Структурные элементы SAN
- 4.8 Методы управления Fibre Channel
- 7.9 Будущее управления хранилищами по версии ассоциации SNIA: стандарты SMI
- 15.1.3. Обработка сигналов управления заданиями