<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - AutoLot.Mvc</title>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="~/css/site.css" />
Замените разметку, удаленную из файла _Layout.cshtml, вызовом для визуализации нового частичного представления:
<head>
<partial name="Partials/_Head"/>
</head>
Дескриптор <partial> — это еще один пример вспомогательной функции дескриптора. В атрибуте name указывается имя частичного представления с путем, начинающимся с текущего каталога представления, которым в данном случае является ViewsShared.
Частичное представление 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>
<b> <partial name="Partials/_Head" /></b>
</head>
<body>
(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})
<header>
<b> <partial name="Partials/_Menu" /></b>
</header>
<div class="container">
<main role="main" class="pb-3">
@RenderBody()
</main>
</div>
<footer class="border-top footer text-muted">
<div class="container">
© 2021 - AutoLot.Mvc - <a asp-area="" asp-controller="Home"
asp-action="Privacy">Privacy</a>
</div>
</footer>
<b> <partial name="Partials/_JavaScriptFiles" /></b>
@await RenderSectionAsync("Scripts", required: false)
</body>
</html>
Отправка данных представлениям
Существует несколько способов отправки данных представлению. В случае строго типизированных представлений данные можно отправлять, когда представления визуализируются (либо из метода действия, либо через вспомогательную функцию дескриптора <partial>).
Строго типизированные представления и модели представлений
При передаче методу View() модели или модели представления значение присваивается свойству @model строго типизированного представления (обратите внимание на букву m в нижнем регистре):
@model IEnumerable<Order>
Свойство @model устанавливает тип для представления, к которому затем можно получать доступ с использованием Razor-команды @Model (обратите внимание на букву М в верхнем регистре):
@foreach (var item in Model)
{
// Делать что-то.
}
В методе действия RazorViewSyntax() демонстрируется представление, получающее данные из этого метода действия:
[HttpGet]
public IActionResult RazorSyntax([FromServices] ICarRepo carRepo)
{
var car = carRepo.Find(1);