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

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

Жанры

Шрифт:

Напомним, что непосредственно в файле разметки страницы указана ссылка на code-behind-файл страницы и класс, определенный в code-behind-файле, которому наследует страница:

%@Page Language="C#" Inherits="MyApp.Pg" CodeBehind="Pg.aspx.cs"%

Класс, определенный в code-behind-файле, служит "прослойкой" между страницей и классом System.Web.UI.Page, базовым для всех страниц WebForms, и отвечает за обработку событий жизненного цикла страницы. В случае, если дополнительная обработка событий

не является необходимой, файл code-behind может быть смело удален, а страница может непосредственно наследовать классу System.Web.UI.Page:

<% @Page Language="C#" Inherits="System.Web.UI.Page" %>

В MVC Framework не используется жизненный цикл страниц ASP.NET, поэтому для представлений применяется аналогичный подход с исключением code-behind-файла, и страницы наследуют непосредственно классу System.Web.Mvc.ViewPage или обобщающему классу System.Web.Mvc.ViewPage<T>, используемому для строгой типизации представлений, описанному далее.

Файлы code-behind могут быть необходимы для представлений, использующих серверные элементы управления, требующих инициализации в различные моменты жизненного цикла страницы. Однако в подавляющем большинстве случаев такой дизайн приложений приводит к сложностям в поддержке проекта, не говоря уже о грубом нарушении подхода MVC.

Мастерские страницы и элементы управления

Из WebForms в механизм представлений в MVC пришел и подход к повторному использованию общей разметки страниц — мастерские страницы (master pages), файлы которых имеют расширение master. Мастерские страницы представляют собой инструмент для определения общего шаблона набора страниц, определяя общую разметку для набора контентных страниц и расположение блоков, содержащихся в контентных страницах.

Принцип построения мастерской страницы следующий:

1. Задается общий дизайн страницы и блоки, общие для набора страниц.

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

<asp:ContentPlaceHolder ID="ContentPageId" runat="server" />

Пример мастерской страницы приведен в листинге 5.1.

3. При создании разметки контентных страниц используются блоки:

<asp:Content ID="myPage" 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 ID="TitleContent" runat="server" />

</title>

<link href="#" rel="stylesheet" type="text/css" />

</head>

<body>

<div class="page">

<div id="header">

<div id="title">

<h1>

Northwind

</h1>

</div>

<div id="logindisplay">

<% Html.RenderPartial("LogOnUserControl"); %> </div>

<div id="menucontainer">

<ul id="menu">

<li>

<%= Html.ActionLink("Домашняя", "Index",

"Home")%>

</li>

<li>

<%= Html.ActionLink("O

сайте", "About",

"Home")%>

</li>

</ul>

</div>

</div>

<div id="main">

<asp:ContentPlaceHolder ID="MainContent" runat="server" /> <div id="footer">

</div>

</div>

</div>

</body>

</html>

Листинг 5.2. Пример контентной страницы

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master"

Inherits="System.Web.Mvc.ViewPage" %>

<asp:Content ID="aboutTitle" ContentPlaceHolderID="TitleContent" runat="server">

о проекте

</asp:Content>

<asp:Content ID="aboutContent" ContentPlaceHolderID="MainContent" runat="server">

<h2>

О проекте

</h2>

Тут что-то написано.

</asp:Content>

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

На контентной странице могут быть заданы несколько блоков Content, соответствующих блокам ContentPlaceHolder, определенным на мастерской странице.

Еще одним механизмом повторного использования разметки являются пользовательские элементы управления или, в терминах MVC, частичные представления. Частичные представления — это фрагменты разметки, вынесенные в отдельный файл с расширением ascx, которые могут быть использованы на страницах представлений через вызов метода RenderPartial класса HtmlHelper. О классе Html и его методах подробнее рассказано далее в этой главе. Ранее в листинге 5.1 приведен пример отображения частичного представления LogOnUserControl.ascx (<% Html.RenderPartial("LogCnUserControl"); %>).

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

"Фантастика 2023-201. Компиляция. Книги 1-26

Кароль Елена
Фантастика 2023. Компиляция
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Фантастика 2023-201. Компиляция. Книги 1-26

Ожоги сердца (сборник)

Падерин Иван Григорьевич
Проза:
военная проза
советская классическая проза
5.00
рейтинг книги
Ожоги сердца (сборник)

Искры

Соколов Михаил
Проза:
советская классическая проза
5.00
рейтинг книги
Искры

Древние тайны (Сборник)

Булычев Кир
Алиса и ее друзья в лабиринтах истории
Детские:
детская фантастика
6.00
рейтинг книги
Древние тайны (Сборник)

Франклин Рузвельт. Человек и политик (с иллюстрациями)

Бернс Джеймс Макгрегор
Проза:
историческая проза
6.25
рейтинг книги
Франклин Рузвельт. Человек и политик (с иллюстрациями)

Академия

Сай Ярослав
2. Медорфенов
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Академия

Огненный шар. Повести и рассказы

Немцов Владимир Иванович
Фантастика:
научная фантастика
7.00
рейтинг книги
Огненный шар. Повести и рассказы

Тетралогия Будущего

Хайнлайн Роберт Энсон
Шедевры фантастики
Фантастика:
боевая фантастика
юмористическая фантастика
7.73
рейтинг книги
Тетралогия Будущего

Сан-Феличе. Книга вторая

Дюма-отец Александр
Приключения:
исторические приключения
6.00
рейтинг книги
Сан-Феличе. Книга вторая

Трилогия «Двуединый»

Сазанов Владимир Валерьевич
Фантастика:
фэнтези
6.12
рейтинг книги
Трилогия «Двуединый»

Светоносец. Трилогия

Джонсон Оливер
Светоносец
Фантастика:
фэнтези
5.00
рейтинг книги
Светоносец. Трилогия

Весь Дэн Браун в одном томе

Браун Дэн
Детективы:
триллеры
прочие детективы
5.00
рейтинг книги
Весь Дэн Браун в одном томе

Гражданский кодекс Российской Федерации. Части первая, вторая, третья и четвертая. Текст с изменения

коллектив авторов 1
Справочная литература:
путеводители
5.00
рейтинг книги
Гражданский кодекс Российской Федерации. Части первая, вторая, третья и четвертая. Текст с изменения

Географ глобус пропил. Золото бунта

Иванов Алексей Викторович
Проза:
современная проза
7.86
рейтинг книги
Географ глобус пропил. Золото бунта