Мастер-шаблоны (master view)

Как и в ASP.Net, Web Forms визуализация может выполняться с помощью использования мастер-шаблонов (мастер-страниц). Мастер- шаблон задает структуру формируемого HTML-кода. Шаблон представления описывает содержание только частей мастер-шаблона. В системе ASPX мастер шаблон задается файлом в папке Shared каталога View с расширением .master (для ASPX) или с расширением .eshtml (для Razor).

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

По умолчанию при создании нового проекта ASP.NET MVC в проект уже добавляется мастер-шаблон под названием _Layout.chtml, который можно найти в папке Views/Shared. Для использования в представлении другой мастер-страницы нужно в секции Layout указать путь к нужной мастер-странице. Например, в представлении Index.cshtml можно определить мастер-страницу так:

@{ Layout = "~/Views/Shared/_Layout.cshtml";}

Если в представлении не нужно использовать мастер-страницу, то нужно задать Layout = null.

Строго типизированное представление для действия Index контроллера Ноте

Рис. 4.44. Строго типизированное представление для действия Index контроллера Ноте

Используемые на мастер-шаблонах заполнитель @RenderBody() позволят вставлять на их место другие представления. Пример мастер-шаблона показан на рис. 4.45.

Пример мастер-шаблона _Layout.cshtml

Рис. 4.45. Пример мастер-шаблона _Layout.cshtml

Для использования мастер шаблона _Layout.cshtml нужно изменить шаблоны представлений (рис. 4.40 и 4.42) следующим образом:

• добавить директиву

@{ Layout = "-/Views/Shared/ Layout.cshtmr:}

• убрать теги <html>, <head> и <body>, которые уже имеются в мастер-шаблоне.

В результате будут получены шаблоны представлений, которые показаны на рис. 4.46 и 4.47.

Представление для действия Index контроллера Ноте, использующее мастер-шаблон _Layout.cshtml

Рис. 4.46. Представление для действия Index контроллера Ноте, использующее мастер-шаблон _Layout.cshtml

Представление для действия [HttpGet] Buy (int id), использующее мастер-шаблон _Layout. eshtml

Рис. 4.47. Представление для действия [HttpGet] Buy (int id), использующее мастер-шаблон _Layout. eshtml

Вместо добавления директивы @{ Layout = "~/Views/Shared/_Layout. eshtml"; } в каждое представление ее можно добавить в специальное представление _ViewStart.cshtml, которое выполняется до любого вызываемого представления.

В мастер-шаблон, кроме основного содержания (@RenderBody()), с помощью заполнителя @RenderSection("имя_секции") можно включать разные секции (аналог placeholder в мастер-страницах), куда

представления могут размещать свое содержимое. Например, в мастер- шаблон можно включить секцию Footer:

<!DOCTYPE html>

@RenderBody()

<footer>@RenderSection("Footer")</footer>

</body>

</html>

В этом случае, чтобы представление вставляло некоторое содержание в созданную секцию, в нем нужно задать @section Foter {...}. Например, в представлении Index можно задать содержание секции Footer следующим образом:

@{ Layout = ”~/Views/Shared/_Layout.cshtmr";}

<!– здесь остальное содержание -->

@section Footer {Все права защищены. Syte Corp. 2012.}

 
< Пред   СОДЕРЖАНИЕ     След >