| « Поставить закладку » « Сделать стартовой » | |||
|
|||
| Статьи:: .NET Framework :: Учебник по ASP.NET :: ASP .NET 2.0: Эталонные страницы
ASP .NET 2.0: Эталонные страницыКто они, эти Эталонные страницы?И так, что же такое эталонная страница? Эталонная страница – это файл с расширением *.master, он практически ни чем не отличается от уже знакомых вам файлов aspx-страниц. Эталонная страница представляет собой контейнер для контента и может содержать html-разметку страницы, html-элементы, серверные элементы управления и пользовательские элементы управления. Другими словами, эталонная страница содержит разметку страницы, те же самые верхний и нижний колонтитул, меню навигации, в общем все, что фактически отображается на всех страницах сайта, а также эталонная страница содержит одно или более полей для подстановки контента (см. рис. 1). Сам контент при этом находится на страницах aspx, которые в свою очередь ссылаются на эталонную страницу. Таким образом, разработчику больше не придется дублировать разметку страниц, поскольку она будет находиться в одном файле. ![]() Рис. 1. Эталонная страница. Работа с эталонными страницамиКак я уже говорил, эталонная страница очень похожа на страницы aspx, но имеет ряд отличий. Так, вместо директивы @Page, эталонная страница имеет директиву @Master. Директива @Master имеет такой же набор параметров, как и @Page, наиболее часто применяются следующие параметры: Language – указывает язык, на котором пишется код; Debug – указывает на состояние режима отладки; Inherits – содержит имя класса отдельного кода; ClassName – задает имя класса, создаваемого при обработке страницы; EnabledTheming – определяет состояние использования тем; Src – задает имя исходного файла с классом отдельного кода. Здесь стоит отметить, что указанные параметры в директиве @Master не наследуются дочерними страницами (страницами контента), а используются только в рамках эталонной страницы. Так например, аргумент Language у эталонной страницы может иметь значение C#, а у страниц контента - VB. На эталонных страницах также можно использовать те же директивы, что и на страницах aspx, например @Register, @Import и т.д. Каждая эталонная страница (их может быть несколько в одном проекте, в зависимости от структуры сайта и потребностей, например, для форума одна эталонная страница, для остальной части сайта – другая) должна иметь как минимум один элемент ContentPlaceHolder, который собственно и является контейнером для контента. Элемент ContentPlaceHolder обычно пустой, но он также может содержать контент, который будет отображаться по умолчанию, в случае, если на страницах aspx не будет контента. Сам контент находится в элементе Content на страницах aspx. Управляющий элемент Content является основным элементом страницы контента и работает только совместно с элементом ContentPlaceHolder. Ссылка на эталонную страницу для страниц контента может находиться в директиве @Page в параметре MasterPageFile, где указывается путь к файлу эталонной страницы, например:
<%@
Page Language="VB"
MasterPageFile="~/MasterPage.master"
CodeFile="Default.aspx.vb"
Inherits="_Default"
%> , а также, ссылка на эталонную страницу может находится в файле web.config, в этом случает, эталонная страница будет применяться ко всем страницам aspx, находящимся в одной папке с web.config (либо ко всему приложению, если web.config находится в корневом каталоге приложения), например:
<configuration>Помимо этого, эталонную страницу можно указать во время выполнения программы, для этого нужно в обработке события Page_PreInit изменить свойство MsterPageFile. Например:
Protected Sub Page_Init(ByVal
sender As
Object,
ByVal e
As
System.EventArgs)
Handles Me.Init
Обратите внимание, данный код вызовет ошибку, если на странице aspx в директиве @Page будет указан аргумент MasterPageFile. Следует также отметить, что сами эталонные страницы могут ссылаться на другие эталонные страницы, для этого нужно указать путь к эталонной странице в аргументе MasterPageFileдирективы @Master. От теории к практикеИ так, пожалуй теории достаточно, перейдем к практическому использованию эталонных страниц. Для начала, сделаем простую эталонную страницу, назовем ее MasterPage.master:
<%@
Master Language="VB"
%>Обратите внимание на элемент ContentPlaceHolder. Наличие этого элемента в эталонной странице обязательно, как я уже говорил, он служит элементом-контейнером для контента. Теперь, создадим несколько aspx страниц с контентом, которые будут ссылаться на нашу эталонную страницу. Первая страница, по сложившейся традиции и стандартам, будет назваться Default.aspx
<%@
Page Language="VB"
MasterPageFile="~/MasterPage.master"
AutoEventWireup="false"
%>Обратите внимание на аргумент MasterPageFile в директиве @Page, который указывает на файл эталонной страницы, в нашем случае это файл MasterPage.master, который находится в корневом каталоге приложения. Как видите, страница контента не содержит тэгов <html></html>, <head></head>, <body></body> и <form></form>, поскольку эти тэги уже есть в нашей эталонной странице. Обратите внимание на элемент Content, в частности на его параметр ContentPlaceHolderID – здесь указывает имя контейнера контента в эталонной странице, т.е. имя элемента ContentPlaceHolder, в который будет вставлен контент. В самом элементе Content содержится текст контента, помимо текста здесь могут содержаться любые допустимые элементы aspx-страниц. Теперь создайте еще одну aspx-страницу, назовите ее Second:
<%@
Page Language="VB"
MasterPageFile="~/MasterPage.master"
AutoEventWireup="false"
%>Теперь запустите проект и ASP .NET соединит эталонную страницу со страницей контента. Доступ к свойствам эталонной страницыДоступ к объектной модели эталонной страницы возможен через свойство Master, однако если попытаться обратиться напрямую к эталонной странице, то произойдет ошибка. Это связано с тем, что эталонная страница представляет собой ссылку на объект эталонной страницы и предоставляет доступ только для открытых свойств и методов. Для примера, разместите на эталонной странице элемент Label и назовите его lblTitle. Чтобы получить возможно изменять текст этого элемента, нужно создать соответствующие свойства в классе эталонной страницы:
Public Property MyTitle()
As StringТеперь, вы можете динамически изменить, либо получить, текст в элементе lblTitle эталонной страницы, например, при обработке события загрузки aspx-страницы:
Protected Sub Page_Load(ByVal
sender As
Object,
ByVal e
As
System.EventArgs)
Handles Me.Load
Вот собственно и все, если у вас возникнут какие либо вопросы, пишите, постараюсь ответить. Автор:
Немиро
Алексей Рубрика: Учебник по ASP.NET
Google Developer Day 2008 в Москве.
Дата проведения: 28 октября 2008 г.; Место проведения: Амбер Плаза, Москва, Россия. Конференция для веб-разработчиков и разработчиков мобильных приложений в Москве. Узнайте, как наилучшим образом использовать инструменты разработки и API от Google, чтобы создавать социальные, мобильные и картографические приложения, как использовать AJAX/JavaScript инструменты и библиотеки от Google и многое другое из первых уст.
Подробнее... |
Рубрика: Мероприятия
| Добавлено: 05.09.2008
ТОП 10 самых раздражающих факторов для программиста.
Совсем недавно наткнулся в интернете на забавный "хит-парад" наиболее раздражающих вещей для программиста. Поскольку он был на английском — решил перевести текст и несколько адаптировать к нашим реалиям…
Подробнее... |
Рубрика: Разное
| Добавлено: 03.09.2008
Windows Server 7, 8 и 9.
Подробнее... |
Рубрика: Windows Server 2003
| Добавлено: 03.09.2008
Остальные статьи:
jQuery для JavaScript-программистов
Инновационный веб-броузер Google Chrome стартует уже сегодня
Windows 7: подход к производительности системы
Trac + Subversion @ Ubuntu: Revisited
[g]Vim в режиме Python: Рекомпиляция в Windows
Java + JSON. Пути к дружбе
Драйвер SQL Server 2005 для PHP
Типы данных в MySQL (сжатый справочник для PHP программиста)
PHP класс для работы с Яндекс.XML
Ошибки начинающих PHP разработчиков
Наследование шаблонов в Smarty
Особенности хранения сессий PHP в memcached
Internet Explorer 8 beta 2
9 правил для начинающего Ajax-разработчика
ExtJS 2.2 - полная поддержка Firefox 3, новые виджеты и другие нововведения
Windows 7: под покровом тайны |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|