Kniga-Online.club
» » » » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Читать бесплатно Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

Класс CarsController

Класс CarsController является центральной точкой приложения AutoLot.Mvc, обладая возможностями создания, чтения, обновления и удаления. В этой версии CarsController напрямую используется уровень доступа к данным. Позже в главе вы создадите еще одну версию CarsController, в которой для доступа к данным будет применяться служба AutoLot.Api.

Приведите операторы using в классе CarsController к следующему виду:

using AutoLot.Dal.Repos.Interfaces;

using AutoLot.Models.Entities;

using AutoLot.Services.Logging;

using Microsoft.AspNetCore.Mvc;

using Microsoft.AspNetCore.Mvc.Rendering;

Ранее вы добавили класс контроллера с маршрутом. Теперь наступило время добавить экземпляры реализаций ICarRepo и IAppLogging<CarsController> через внедрение зависимостей. Добавьте две переменные уровня класса для хранения этих экземпляров, а также конструктор, который будет внедрять оба экземпляра:

private readonly ICarRepo _repo;

private readonly IAppLogging<CarsController> _logging;

public CarsController(ICarRepo repo, IAppLogging<CarsController> logging)

{

  _repo = repo;

  _logging = logging;

}

Частичное представление списка автомобилей

Списковые представления (одно для целого реестра автомобилей и одно для списка автомобилей по производителям) совместно используют частичное представление. Создайте в каталоге ViewsCars новый каталог по имени Partials и добавьте в него файл представления _CarListPartial.cshtml, очистив его содержимое. Установите IEnumerable<Car> в качестве типа (его ненужно указывать полностью, поскольку в файл _ViewImports.cshtml добавлено пространство имен AutoLot.Models.Entities):

@model IEnumerable< Car>

Далее добавьте блок кода Razor с набором булевских переменных, которые указывают, должны ли отображаться производители. Когда частичное представление CarListPartial.cshtml применяется полным реестром автомобилей, производители будут показаны, а когда отображаются автомобили только одного производителя, то поле Make должно быть скрыто:

@{

    var showMake = true;

    if (bool.TryParse(ViewBag.ByMake?.ToString(), out bool byMake))

    {

        showMake = !byMake;

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

    }

}

В следующей разметке ItemCreateTagHelper используется для создания ссылки на метод Create() типа HttpGet. В случае применения специальных вспомогательных функций дескрипторов имя указывается с использованием "шашлычного" стиля в нижнем регистре, т.е. суффикс TagHelper отбрасывается, а каждое слово в стиле Pascal приводится к нижнему регистру и отделяется символом переноса (что похоже на шашлык):

<p>

  <item-create></item-create>

</p>

Для настройки таблицы и ее заголовков применяется вспомогательная функция HTML, посредством которой получаются значения DisplayName, связанные с каждым свойством. Для DisplayName будет выбираться значение атрибута Display или DisplayName, и если он не установлен, то будет использоваться имя свойства. В следующем разделе применяется блок кода Razor для отображения информации о производителе на основе ранее установленной переменной уровня представления:

<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(). Эта вспомогательная функция HTML ищет шаблон отображения с именем, соответствующим типу свойства, и если шаблон не обнаруживается, то разметка создается стандартным образом. Для каждого свойства объекта также выполняется поиск шаблона отображения, который применяется при его наличии. Например, если Car имеет свойство DateTime, то для него будет использоваться показанный ранее в главе шаблон DisplayTemplate.

В следующем блоке также задействованы специальные вспомогательные функции дескрипторов item-edit, item-details и item-delete, которые были добавлены ранее. Обратите внимание, что при передаче значений открытому свойству специальной вспомогательной функции имя свойства указывается с применением "шашлычного" стиля в нижнем регистре и добавляется к дескриптору в виде атрибута:

Перейти на страницу:

Троелсен Эндрю читать все книги автора по порядку

Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


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

Отзывы читателей о книге Язык программирования C#9 и платформа .NET5, автор: Троелсен Эндрю. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*