Файлы code-behind могут быть необходимы для представлений, использующих серверные элементы управления, требующих инициализации в различные моменты жизненного цикла страницы. Однако в подавляющем большинстве случаев такой дизайн приложений приводит к сложностям в поддержке проекта, не говоря уже о грубом нарушении подхода MVC.
Мастерские страницы и элементы управления
Из WebForms в механизм представлений в MVC пришел и подход к повторному использованию общей разметки страниц — мастерские страницы (master pages), файлы которых имеют расширение master. Мастерские страницы представляют собой инструмент для определения общего шаблона набора страниц, определяя общую разметку для набора контентных страниц и расположение блоков, содержащихся в контентных страницах.
Принцип построения мастерской страницы следующий:
1. Задается общий дизайн страницы и блоки, общие для набора страниц.
2. В разметке мастерской страницы определяются блоки, которые будут заполнены содержимым контентных страниц с помощью разметки:
Пример мастерской страницы приведен в листинге 5.1.
3. При создании разметки контентных страниц используются блоки:
где ContentPlaceHolderID
соответствует тому фрагменту мастерской страницы, который помечен элементом ContentPlaceHolder
с соответствующим свойством id
. Пример контентной страницы приведен в листинге 5.2.
Листинг 5.1. Пример мастерской страницы
" http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
http://www.w3.org/1999/xhtml">
Листинг 5.2. Пример контентной страницы
о проекте
О проекте
</</code> h2>
Тут что-то написано.
Мастерские страницы могут быть вложенными, т. е. в свою очередь использовать мастерские страницы. Это может быть полезно, когда существует общая планировка всех страниц на сайте (родительская мастерская страница) и несколько вариантов планировки дизайна вложенных разделов (дочерние мастерские страницы).
На контентной странице могут быть заданы несколько блоков Content
, соответствующих блокам ContentPlaceHolder
, определенным на мастерской странице.
Еще одним механизмом повторного использования разметки являются пользовательские элементы управления или, в терминах MVC, частичные представления. Частичные представления — это фрагменты разметки, вынесенные в отдельный файл с расширением ascx, которые могут быть использованы на страницах представлений через вызов метода RenderPartial()
класса HtmlHelper
. О классе Html
и его методах подробнее рассказано далее в этой главе. Ранее в листинге 5.1 приведен пример отображения частичного представления LogOnUserControl.ascx (
).
Частичное представление содержит ту же самую разметку и строится по тем же принципам, что и представление. Пример разметки упомянутого ранее частичного представления LogOnUserControl.ascx показан в листинге 5.3. Разметка, приведенная в листинге 5.3, подробно рассматривается далее.
Листинг 5.3. Разметка частичного представления LogOnUserControl.ascx
Добро пожаловать !
[ ]
[ ]
Частичные представления могут быть использованы также при создании многократно используемых функциональных блоков на разных страницах (часто называемых гаджетами), о которых речь пойдет в конце этой главы.
Файлы представлений в структуре проекта
В главе 1 уже рассматривалось размещение файлов в директории проекта, однако сейчас остановимся на этой теме подробнее.
Все файлы, относящиеся к представлениям, размещаются внутри директории Views, во вложенных директориях, соответствующих названиям контроллеров, использующих эти представления, либо внутри директории Shared, содержащей представления, мастерские страницы и частичные представления, используемые разными контроллерами.
Допустим, что в проекте присутствуют два контроллера: HomeController
и AccountController
, тогда структура директории Views выглядит следующим образом:
□ Account — в этой директории содержатся представления, используемые действиями контроллера Account
.
□ Home — в этой директории содержатся представления, используемые действиями контроллера Home
.
□ Shared — в этой директории содержатся мастерские страницы, частичные представления и представления, которые могут быть использованы всеми контроллерами, например, страница с информацией об ошибке, возникшей во время выполнения действия контроллера.
Читать дальше
Конец ознакомительного отрывка
Купить книгу