Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
Класс CarsController
Класс
CarsControllerAutoLot.MvcCarsControllerCarsControllerAutoLot.ApiПриведите операторы
usingCarsControllerusing AutoLot.Dal.Repos.Interfaces;using AutoLot.Models.Entities;using AutoLot.Services.Logging;using Microsoft.AspNetCore.Mvc;using Microsoft.AspNetCore.Mvc.Rendering;Ранее вы добавили класс контроллера с маршрутом. Теперь наступило время добавить экземпляры реализаций
ICarRepoIAppLogging<CarsController>private readonly ICarRepo _repo;private readonly IAppLogging<CarsController> _logging;public CarsController(ICarRepo repo, IAppLogging<CarsController> logging){ _repo = repo; _logging = logging;}Частичное представление списка автомобилей
Списковые представления (одно для целого реестра автомобилей и одно для списка автомобилей по производителям) совместно используют частичное представление. Создайте в каталоге
ViewsCarsPartials_CarListPartial.cshtmlIEnumerable<Car>_ViewImports.cshtmlAutoLot.Models.Entities@model IEnumerable< Car>Далее добавьте блок кода Razor с набором булевских переменных, которые указывают, должны ли отображаться производители. Когда частичное представление
CarListPartial.cshtmlMake@{ var showMake = true; if (bool.TryParse(ViewBag.ByMake?.ToString(), out bool byMake)) { showMake = !byMake; }}В следующей разметке
ItemCreateTagHelperCreate()HttpGetTagHelper<p> <item-create></item-create></p>Для настройки таблицы и ее заголовков применяется вспомогательная функция HTML, посредством которой получаются значения
DisplayNameDisplayNameDisplayDisplayName<table class="table"> <thead> <tr> @if (showMake) { <th> @Html.DisplayNameFor(model => model.MakeId) </th> } <th> @Html.DisplayNameFor(model => model.Color) </th> <th> @Html.DisplayNameFor(model => model.PetName) </th> <th></th> </tr> </thead>В последнем разделе производится проход по записям и их отображение с использованием вспомогательной функции HTML по имени
DisplayFor()CarDateTimeDisplayTemplateВ следующем блоке также задействованы специальные вспомогательные функции дескрипторов
item-edititem-detailsitem-delete