Чтение онлайн

ЖАНРЫ

Язык программирования C#9 и платформа .NET5
Шрифт:

@RenderSection("Header",true)

Любой код и/или разметка в блоке @ section файла представления будет визуализироваться не там, где вызывается

@RenderBody
, а в месте определения раздела, присутствующего в компоновке. Например, пусть у вас есть представление со следующей реализацией раздела:

@section Scripts {

<script src="~/lib/jquery-validation/dist/jquery.validate.js"></script>

}

Код

из представления визуализируется в компоновке на месте определения раздела. Если компоновка содержит показанное ниже определение:

<script src="~/lib/jquery/dist/jquery.min.js"></script>

<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>

<script src="~/js/site.js" asp-append-version="true"></script>

@await RenderSectionAsync("Scripts", required: false)

тогда будет добавлен раздел представления, приводя в результате к отправке браузеру следующей разметки:

<script src="~/lib/jquery/dist/jquery.min.js"></script>

<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>

<script src="~/js/site.js" asp-append-version="true"></script>

<script src="~/lib/jquery-validation/dist/jquery.validate.js"></script>

В ASP.NET Core появились два новых метода:

IgnoreBody
и
IgnoreSection
. В случае помещения внутрь компоновки эти методы отменяют визуализацию тела представления или указанного раздела соответственно. Они позволяют включать или отключать функции представления в компоновке на основе условной логики, такой как уровни безопасности.

Указание стандартной компоновки для представлений

Как упоминалось ранее, стандартная страница компоновки определяется в файле

_ViewStart.cshtml
. Любое представление, где не указана компоновка, будет использовать компоновку, определенную в первом файле
_ViewStart.cshtml
, который обнаруживается в каталоге представления или выше него в структуре каталогов.

Частичные представления

Частичные представления концептуально похожи на пользовательские элементы управления в Web Forms. Частичные представления удобны для инкапсуляции пользовательского интерфейса, что помогает сократить объем повторяющегося кода и/или разметки. Частичное представление не задействует компоновку и внедряется внутрь другого представления или визуализируется с помощью компонента представления (рассматривается позже в главе).

Обновление компоновки с использованием частичных представлений

Временами файлы могут становиться большими и громоздкими. Один из способов справиться с такой проблемой предусматривает разбиение компоновки на набор специализированных частичных представлений.

Создание частичных представлений

Создайте внутри каталога Shared новый каталог подназванием

Partials
и добавьте в него три пустых представления с именами
_Head.cshtml
,
_JavaScriptFiles.cshtml
и
_Menu.cshtml
.

Частичное

представление Head

Вырежьте содержимое между дескрипторами

<head></head>
в компоновке и вставьте его в файл
_Head.cshtml
:

<meta charset="utf-8" />

<meta name="viewport" content="width=device-width, initial-scale=1.0" />

<title>@ViewData["Title"] - AutoLot.Mvc</title>

<link rel="stylesheet" href="#" />

<link rel="stylesheet" href="#" />

Замените разметку, удаленную из файла

_Layout.cshtml
, вызовом для визуализации нового частичного представления:

<head>

<partial name="Partials/_Head"/>

</head>

Дескриптор

<partial>
— это еще один пример вспомогательной функции дескриптора. В атрибуте name указывается имя частичного представления с путем, начинающимся с текущего каталога представления, которым в данном случае является
Views\Shared
.

Частичное представление Menu

Для частичного представления

Menu
вырежьте всю разметку между дескрипторами
<header></header>
(не
<headx/head>
) и вставьте ее в файл
Menu.cshtml
. Модифицируйте файл
Layout.cshtml
, чтобы визуализировать частичное представление
Menu
:

<header>

<partial name="Partials/_Menu"/>

</header>

Частичное представление JavaScriptFiles

Наконец, вырежьте дескрипторы

<script>
для файлов JavaScript и вставьте их в частичное представление
JavaScriptFiles
. Удостоверьтесь в том, что оставили дескриптор
RenderSection
на своем месте. Вот частичное представление
JavaScriptFiles
:

<script src="~/lib/jquery/dist/jquery.min.js"></script>

<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>

<script src="~/js/site.js" asp-append-version="true"></script>

Ниже приведена текущая разметка в файле

_Layout.cshtml
:

<!DOCTYPE html>

<html lang="en">

<head>

<partial name="Partials/_Head" />

</head>

<body>

<header>

Поделиться с друзьями: