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

на главную - закладки

Жанры

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

<select asp-for="MakeId" class="form-control" asp-items="ViewBag.MakeId">

</select>

</div>

<div class="form-group">

<label asp-for="Color" class="col-form-label"></label>

<input asp-for="Color" class="form-control"/>

<span asp-validation-for="Color" class="text-danger"></span>

</div>

В

шаблоне редактирования задействовано несколько вспомогательных функций дескрипторов (
asp-for
,
asp-items
,
asp-validation-for
и
asp-validation-summary
), которые рассматриваются позже в главе.

Шаблон редактирования

Car
вызывается с помощью вспомогательных функций HTML, которые называются
EditorFor
и
EditorForModel
. Подобно шаблонам отображения упомянутые функции будут искать представление с именем
Car.cshtml
или с таким же именем, как у метода.

Компоновки

По аналогии с мастер-страницами Web Forms в MVC поддерживаются компоновки, которые совместно используются представлениями, чтобы обеспечить согласованный внешний вид страниц сайта. Перейдите в каталог

Views\Shared
и откройте файл
_Layout.cshtml
. Это полноценный HTML-файл с дескрипторами
<head>
и
<body>
.

Файл

_Layout.cshtml
является основой, в которую визуализируются другие представления. Кроме того, поскольку большая часть страницы (такая как разметка для навигации и верхнего и/или нижнего колонтитула) поддерживается страницей компоновки, страницы представлений сохраняются небольшими и простыми. Найдите в файле
_Layout.cshtml
следующую строку кода Razor:

@RenderBody

Эта строка указывает странице компоновки, где визуализировать представление. Теперь перейдите к строке, расположенной прямо перед закрывающим дескриптором

</body>
, которая создает новый раздел для компоновки и объявляет его необязательным:

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

Разделы также могут помечаться как обязательные путем передачи для второго параметра (

required
) значения
true
. Вдобавок они могут визуализироваться синхронным образом:

@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
:

Поделиться:
Популярные книги

Инцел на службе демоницы 1 и 2: Секса будет много

Блум М.
Инцел на службе демоницы
Фантастика:
фэнтези
5.25
рейтинг книги
Инцел на службе демоницы 1 и 2: Секса будет много

Весь цикл «Десантник на престоле». Шесть книг

Ланцов Михаил Алексеевич
Десантник на престоле
Фантастика:
альтернативная история
8.38
рейтинг книги
Весь цикл «Десантник на престоле». Шесть книг

Предатель. Цена ошибки

Кучер Ая
Измена
Любовные романы:
современные любовные романы
5.75
рейтинг книги
Предатель. Цена ошибки

Жандарм 2

Семин Никита
2. Жандарм
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Жандарм 2

Прогрессор поневоле

Распопов Дмитрий Викторович
2. Фараон
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прогрессор поневоле

Всемирная энциклопедия афоризмов. Собрание мудрости всех народов и времен

Агеева Елена А.
Документальная литература:
публицистика
5.40
рейтинг книги
Всемирная энциклопедия афоризмов. Собрание мудрости всех народов и времен

Истребитель. Ас из будущего

Корчевский Юрий Григорьевич
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.25
рейтинг книги
Истребитель. Ас из будущего

Очешуеть! Я - жена дракона?!

Амеличева Елена
Фантастика:
юмористическая фантастика
5.43
рейтинг книги
Очешуеть! Я - жена дракона?!

Отмороженный 4.0

Гарцевич Евгений Александрович
4. Отмороженный
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Отмороженный 4.0

Треугольная шляпа. Пепита Хименес. Донья Перфекта. Кровь и песок.

Бласко Висенте Ибаньес
65. Библиотека всемирной литературы
Проза:
классическая проза
5.00
рейтинг книги
Треугольная шляпа.
Пепита Хименес.
Донья Перфекта.
Кровь и песок.

Измена. Жизнь заново

Верди Алиса
1. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Жизнь заново

Три `Д` для миллиардера. Свадебный салон

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
7.14
рейтинг книги
Три `Д` для миллиардера. Свадебный салон

Бастард Императора. Том 5

Орлов Андрей Юрьевич
5. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 5

Идеальный мир для Лекаря 21

Сапфир Олег
21. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 21