Обмен информацией между страницами с содержимым (Content Pages) и мастер–страницами (Master Pages)

ОГЛАВЛЕНИЕ

При создании верстки веб-сайта дизайнеры обычно разбивают ее на несколько областей, таких как общая верхняя часть, включающая в себя логотип и различные навигационные ссылки, а слева, скорее всего, будет меню навигации, область основного содержимого и наверняка какая-нибудь карта сайта или информация о правах в нижней части. В ASP.NET 2.0 объявление таких областей и использование их на нескольких страницах веб-сайта возможно при помощи мастер-страниц (Master Pages). Мастер-страница позволяет разработчикам создать верстку для всего сайта, при этом отметив те области, которые нужно настроить на каждой странице.

Одним из препятствий на пути разработчиков, использующих мастер-страницы, является то, каким образом они будут передавать информацию с мастер-страницы к странице с содержимым, и наоборот. Мастер-страница может содержать элемент управления DropDownList (выпадающий список), и в момент, когда его индекс выбора изменяется, соответствующая страница с содержимым должна быть обновлена. Или, например, какое-то действие на странице с содержимым должно обновить вид мастер-страницы. В данной статье мы рассмотрим технику обмена  информацией между мастер-страницей и страницей с содержимым. Читайте далее, чтобы узнать больше об этом!

Основы дизайна мастер-страницы и страницы с содержимым

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

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

Почему предпочтительнее имееть сильную связь между страницей с содержимым и мастер-страницей?
Вам , вероятно, интересно, почему я посоветовал использовать связывание со стороны страницы с содержимым по направлению к мастер-странице, а не наоборот. Когда существует связь от A к B, изменение B обычно требует соответствующей модификации A.  Во-первых, поскольку я предполагаю, что у многих веб-сайтов гораздо меньше мастер-страниц, чем страниц с содержимым, и не так велика  вероятность частого обновления сильно связанного интерфейса мастер–страниц,  то это будет сделано на странице с содержимым (с точки зрения оптимизации больший смысл обретает мысль о том, что необходимо использовать связывание от страниц по направлению к мастер-страницам).  Во-вторых, данное направление связывания "ощущается" лучшим образом. При связывании новой веб-страницы с существующей мастер-страницей как-то не практично останавливаться и думать: "Хорошо, а какой функциональностью должна обладать данная страница, чтобы она могла работать с этой мастер-страницей?" Если приведенная информация сбивает вас с толку, то не задумывайтесь так сильно над ней - после того, как вы исследуете примеры из приложения к данной статье, я думаю, все будет более понятным.