Россия |
Средства форматирования страниц
Многослойное подключение мастер-страниц
Принципиально возможно подключение одной мастер-страницы к другой - ASP.NET это позволяет. Можно использовать столько уровней вложения мастер-страниц, сколько это необходимо. Но нужно иметь ввиду, что многокаскадная схема подключения мастер-страниц делает код запутанным и ненадежным, поэтому рекомендуется использовать только один уровень мастер-страниц. К тому же, режим Design оболочки работает только для мастер-страницы верхнего уровня, а для уровней мастер-страниц большей глубины дескрипторный код нужно будет писать вручную.
Но мы, все-таки, рассмотрим эту возможность на примере мастер-страниц двух уровней. Мы создадим две мастер-страницы с последовательным подключением нижнего уровня Level1 к верхнему Level0.
-
Создайте в корне Web-дерева мастер-страницу нижнего уровня с именем MasterPageLevel1.master
-
Код страницы сделайте таким
<%@ Master Language="C#" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div style="text-align: center; color: #0000ff"> <h1> Мастер-страница уровня Level1 - наибольшей глубины. Ее можно использовать как верхний колонтитул </h1> <asp:ContentPlaceHolder ID="ContentPlaceHolderLevel1" runat="server"> </asp:ContentPlaceHolder> </div> </form> </body> </html>
-
Теперь создайте мастер-страницу верхнего уровня с именем MasterPageLevel0.master и подключите к ней предыдущую через атрибут MasterPageFile директивы @Master
Код страницы должен выглядеть так
<%@ Master Language="C#" MasterPageFile="~/MasterPageLevel1.master" %> <asp:Content ID="ContentLevel0" ContentPlaceHolderID="ContentPlaceHolderLevel1" runat="server"> <table width="100%" style="background-color: #ccff00" border="1"> <tr> <td colspan="2"> <h2> Мастер-страница уровня Level0 - верхнего уровня </h2> </td> </tr> <tr> <td style="width: 200px"> <strong>Здесь можно расположить элементы навигации</strong> </td> <td style="background-color: #ccffff"> <asp:ContentPlaceHolder ID="ContentPlaceHolderLevel0" runat="server"> </asp:ContentPlaceHolder> </td> </tr> </table> </asp:Content>
-
Выполните для страницы MasterPageLevel0.master команду Website/Add Content Page, чтобы создать для нее страницу содержимого
-
Измените имя по умолчанию Default.aspx созданной страницы содержимого на TestMasterPageLevel.aspx и отредактируйте ее так
<%@ Page Language="C#" MasterPageFile="~/MasterPageLevel0.master" Title="Untitled Page" %> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolderLevel0" runat="Server"> <strong>Это есть заменяющее содержимое для мастер-страницы верхнего уровня Level0</strong> </asp:Content>
-
Назначьте страницу содержимого TestMasterPageLevel.aspx стартовой и исполните ее
Результат будет таким
Итак, все работает, но нам это не надо - слишком запутано и посмотреть в Design нельзя!
Подключение мастер-страницы через конфигурационный файл
Для страниц, которые не имеют подключения мастер-страницы посредством атрибута MasterPageFile, можно задать мастер-страницу по умолчанию в кофигурационном файле блоком
<configuration> <system.web> <pages masterPageFile="XXX.master" /> </system.web> </configuration>
Этот подход не считается надежным, поскольку требует строгого согласования всех страниц содержимого с шаблонами одной мастер-страницы. Как только это условие будет нарушено, появится исключение. Если необходимо применить именно этот вариант, то нужно создать отдельную папку со своим файлом web.config и поместить в нее мастер-страницу и согласованные страницы содержимого
Наши перспективы
Ну вот и приплыли, граждане студенты. До сих пор я писал изложение, а вы его читали. Теперь вы будете писать сочинение, а я его буду смотреть в аттестационную и зачетную недели! Отсюда вам мой наказ (читай "Указ!"):
- На занятия можете не ходить - это ваше личное дело, но знать данный материал вы обязаны (если я ошибаюсь - спросите у декана). Это уже вопрос государственной безопасности! (чтобы перед Большим Биллом не краснеть)
- Сочинение будете писать на вольную тему в виде взаимосвязанных активных страниц на ASP.NET 2.0
- Сегодня (беру слепок сверху) 19.03.2009 11:51 и материала для вас уже изложено достаточно, чтобы приступить к работе
- Ни один не получит зачет (я не боюсь директор магазин, товаровед, завсклад), пока не представит приличный сайт на вольную тему (мне еще темы сочинять не хватало!)
- Просто статические страницы не пойдут, должен быть код с приличной функциональностью
- Дизайн и графика большого значения не имеет, хотя настраивать стиль нужно
- Все, что я знаю и умею по этому средству, должны знать и уметь вы. А то какое-то неравенство и стыд получается!
- Пора и власть употребить
- Как говорил наш шеф, куй железо не отходя от кассы
- Как гласит народная мудрость, время - деньги; не расчитывай на деньги, если нет времени!