Опубликован: 14.11.2006 | Доступ: свободный | Студентов: 5897 / 532 | Оценка: 4.18 / 3.74 | Длительность: 16:37:00
ISBN: 978-5-9556-0085-7
Лекция 12:

Шаблоны дизайна страниц ASP .NET

< Лекция 11 || Лекция 12: 1234 || Лекция 13 >

Вложенные мастер-страницы

Шаблоны дизайна могут наследовать другие шаблоны. Например, сайт состоит из нескольких разделов. Все страницы сайта имеют общие элементы, и все страницы раздела имеют другие общие элементы. Сайт цветочного магазина состоит из разделов многолетних и однолетних цветов. Для них созданы шаблоны, которые наследуют общий шаблон сайта:

<%@ master language="C#" masterpagefile="~/Site4.master"%>

<asp:content contentplaceholderid="SectionContents" runat="serv-
er">
    <h3>Perrenials</h3>
    <asp:contentplaceholder id="FlowerText" runat="server"/>
    <br /><br />
    <asp:contentplaceholder id="FlowerPicture" runat="server"/>
</asp:content>

Страница, описывающая нарциссы, находится в разделе многолетних цветов и наследует шаблон SectionPerrenials:

<%@ page language="C#" masterpagefile="~/SectionPerrenials.master" 
%>
<asp:content id="FlowerText" ContentPlaceHolderId="FlowerText" 
runat="server">
    Daffodils bloom early in spring and welcome the growing sea-
son.
</asp:content>
<asp:content id="FlowerPicture" 
ContentPlaceHolderId="FlowerPicture" runat="server">
    <asp:image id="image1" runat=server imageurl="~/images/daf-
fodil.jpg"/>
</asp:content>

Последовательность событий

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

  • Инициализация вложенных элементов управления главной страницы.
  • Инициализация вложенных элементов управления страницы содержания.
  • Инициализация самой главной страницы.
  • Инициализация страницы содержания.
  • Загрузка ( Page_Load ) страницы содержания.
  • Загрузка ( Page_Load ) главной страницы.
  • Событие Page_LoadComplete страницы содержания.
  • Загрузка дочерних элементов управления управления главной страницы.
  • Загрузка дочерних элементов управления управления страницы содержания.

Событие LoadComplete было введено для того, чтобы можно было обратиться из страницы содержания к элементам главной страницы, созданным в ее Page_Load. Это нельзя сделать в обработчике Page_Load страницы содержания, так как она загружается до главной страницы.

Страницы шаблонов для конкретных платформ

Во многих случаях приложения разрабатываются для просмотра на разных видах контейнеров. Это могут быть различные браузеры или программы просмотра web-сайтов на карманных компьютерах и мобильных телефонах.

Поэтому ASP .NET 2.0 позволяет в атрибуте MasterPageFile директивы Page определить разные страницы шаблона для конкретных контейнеров:

<%@ Page Language="VB" MasterPageFile="~/Wrox.master"
Mozilla:MasterPageFile="~/WroxMozilla.master"
Opera:MasterPageFile="~/WroxOpera.master" %>

Заключение

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

< Лекция 11 || Лекция 12: 1234 || Лекция 13 >
Алексей Савельев
Алексей Савельев

https://technet.microsoft.com/en-us/library/ms143221(v=sql.105).aspx

Денис Прокофьев
Денис Прокофьев

Везде написано, что это самый независимый и простой в использовании навигационный элемент управления, что он работает сразу с web.sitemap и не требует определения SiteMapDataSource.

Моя карта сайта состоит из двух страниц, вложенных друг в друга. asp:Menu, asp:TreeView отбображаются как ожидалось, а вот asp:SiteMapPath - нет. Он не виден нигде. Однако на его месте формируется разметка: <span id="SiteMapPath1"><a href="#SiteMapPath1_SkipLink" style="position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden;">Проход по ссылкам навигации</a><a id="SiteMapPath1_SkipLink"></a></span> - т.е. элемент отрабатывает.

В словах xHTML это выглядит так: <asp:SiteMapPath ID="SiteMapPath1" runat="server" />. Причем не важно - внутри тега form или снаружи - всегда одинаково.

Т.к. другие нав. ЭУ работают через простой источник данных без ошибок, делаю вывод - карта составлена правильно. ИД: <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />

Карта: <?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode url="~/L11_1_simplePage.aspx" title="Страница 1"  description="Простая страница 1." >
    <siteMapNode url="~/L11_1SimplePage2.aspx" title="Страница 2"  description="Простая страница 2" />
  </siteMapNode>
</siteMap>

Почему так происходит? Вроде делаю все по примерам. VS Community 2015. NetFramework в проекте: v4.0.30319