Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы Java и C# технологии.doc
Скачиваний:
171
Добавлен:
01.03.2016
Размер:
3.04 Mб
Скачать
        1. Создание шаблона дизайна

Шаблон дизайна страниц (Master pages) представляет собой обычную ASP.NET страницу, обладающую несколькими дополнительными атрибутами и свойствами и содержащую один или несколько специальных элементов управленияContentPlaceHolder. Для того чтобы преобразовать обычную страницу в шаблон, достаточно заменить директивуPageна директивуMaster.

После этого необходимо вставить в разметку страницы серверные элементы управления ContentPlaceHolderв те части страницы, где будет размещаться информация, не относящаяся к общему дизайну.

<%@Master Language=”C#”

CodeFile=”MainMaster.master.cs” Inherits=”MainMaster_master” %>

<html>

<head runat="server">

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Моя домашняя страница</title>

</head>

<body>

<table width="100%">

<tr>

<span id="PageTitle" runat="server"></span>

</tr>

<tr>

<table width="100%">

<tr>

<td>

<asp:contentplaceholder id="PageMenu" runat="server" />

</td>

<td>

<form runat="server">

<asp:contentplaceholder id="PageContent" runat="server" />

</form>

</td>

</tr>

</table>

</tr>

<tr>

<p align="right">Время: <span id="PageTime"

runat="server"></span></p>

</tr>

</table>

</body>

</html>

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

Элемент управления ContentPlaceHolderпозволяет определить содержимое, которое будет использоваться в случае, если страница, использующая шаблон, не переопределит содержимое элемента управления.

<asp:contentplaceholder id="PageMenu" runat="server">

<ul>

<li><a href="Default.aspx">Главная страница</a></li>

<li><a href="Contents.aspx">Оглавление</a></li>

</ul>

</asp:contentplaceholder>

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

protected void Page_Load(object sender, EventArgs e) { PageTime.InnerText = DateTime.Now.ToShortDateString(); }

public string Title

{ get

{ return PageTitle.InnerText;

}

Set

{ PageTitle.InnerText = value;

}

}

        1. Создание страницы

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

<%@Page Language=”C#” CodeFile=”Default.aspx.cs”

Inherits=”Default_aspx” MasterPageFile=”MainMaster.master”%>

<asp:content runat="server" id="MyMenu" contentplaceholderID="PageMenu">

<ul>

<li><a href="Page1.aspx">Страница 1</a></li>

<li><a href="Page2.aspx">Страница 2</a></li>

<li><a href="Page3.aspx">Страница 3</a></li>

</ul>

</asp:content>

<asp:content runat="server" ID="MyContent" contentplaceholderID="PageContent">

<asp:TextBox id="txtName" runat="server"></asp:TextBox> <asp:Button id="btnShow" runat="server" Text="Показать" OnClick="btnShow_Click" />

<br /><asp:PlaceHolder ID="PlaceHolder" runat="server"></asp:PlaceHolder>

</asp:content>

Также как и в случае с шаблоном, код логики страницы создается обычным образом. Единственное отличие в том, что страница не имеет собственных объектов вроде HeadControl, поэтому нужно использовать ссылку на страницу шаблона через свойствоMaster.

protected void Page_Load(object sender, EventArgs e)

{ if (!Page.IsPostBack)

Master.Page.Header.Title = "Домашняя страница";

}

protected void btnShow_Click(object sender, EventArgs e)

{ PlaceHolder.Controls.Add(new LiteralControl("<script> alert('Добрый день, " + txtName.Text + "'); </script>"));

Master.Page.Header.Title = "Добрый день, " + txtName.Text;

}

Для того чтобы привязать страницу к шаблону, используется атрибут MasterPageFileдирективыPage. Если же необходимо привязать один и тот же шаблон ко всем страницам в директории, то нет необходимости указывать атрибутMasterPageFileдля каждой страницы, достаточно задать базовый шаблон в файлеWeb.config.

<?xml version="1.0"?>

<configuration xmlns="http://schemas.microsoft.com/.NETConfiguration/v2.0">

<system.Web>

<pages master="MainMaster.master" />

</system.Web>

</configuration>

Кроме того, ASP.NET позволяет устанавливать тему оформления программным образом. Как было сказано выше, загрузка и связывание с шаблоном оформления происходит во время подготовки страницы к инициализации. Поэтому, если необходимо сменить шаблон оформления страницы, необходимо делать это в обработчике события PreInit.

protected void Page_PreInit(object sender, EventArgs e)

{ Page.MasterPageFile = "AnotherMaster.master";

}