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

Изменить размер шрифта:

@model Car

@{

  ViewData["Title"] = "Details";

}

<h1>Details for @Model.PetName</h1>

@Html.DisplayForModel()

<div>

  <item-edit item-id="@Model.Id"></item-edit>

  <item-delete item-id="@Model.Id"></item-delete>

  <item-list></item-list>

</div>

Вспомогательная функция

@Html.DisplayForModel()
использует созданный ранее шаблон отображения (
Car.cshtml
) для вывода детальной информации об автомобиле.

Прежде чем обновлять метод действия

Details()
, добавьте вспомогательный метод по имени
GetOne()
, который будет извлекать одиночную запись
Car
:

internal Car GetOneCar(int? id) => !id.HasValue ? null : _repo.Find(id.Value);

Модифицируйте метод действия

Details()
следующим образом:

[HttpGet("{id?}")]

public IActionResult Details(int? id)

{

  if (!id.HasValue)

  {

    return BadRequest();

  }

  var car = GetOneCar(id);

  if (car == null)

  {

    return NotFound();

  }

  return View(car);

}

Маршрут для метода действия

Details()
содержит необязательный параметр маршрута
id
с идентификатором автомобиля, значение которого присваивается параметру
id
метода. Обратите внимание, что у параметра маршрута есть вопросительный знак с маркером. Это указывает на необязательность параметра, почти как вопросительный знак в типе
int?
делает переменную
int
допускающей значение
null
. Если параметр не был предоставлен или оболочка службы не может отыскать автомобиль с идентификатором, заданным в параметре маршрута, тогда метод возвращает ошибку
NotFound
. В противном случае метод отправляет найденную запись
Car
представлению
Details
. Запустив приложение и перейдя по ссылке , вы увидите экран, показанный на рис. 31.6.

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

Представление Create

Представление

Create
было начато ранее. Вот его полная разметка:

@model Car

@{

    ViewData["Title"] = "Create";

}

<h1>Create a New Car</h1>

<hr/>

<div class="row">

  <div class="col-md-4">

    <form asp-controller="Cars" asp-action="Create">

      <div asp-validation-summary="ModelOnly" class="text-danger"></div>

      @Html.EditorForModel()

      <div class="form-group">

        <button type="submit"

          class="btn btn-success">Create <i class="fas fa-
plus"></i>

        </button>  |  

        <item-list></item-list>

      </div>

    </form>

  </div>

</div>

@section Scripts {

    <partial name="_ValidationScriptsPartial" />

}

Вспомогательная функция

@Html.EditorForModel()
использует созданный ранее шаблон отображения (
Car.cshtml
) для отображения редактора сведений об автомобиле.

В разделе

Scripts
представления указано частичное представление
_ValidationScriptsPartial
. Вспомните, что в компоновке этот раздел встречается после загрузки jQuery. Шаблон разделов помогает гарантировать загрузку надлежащих зависимостей до загрузки самого содержимого.

Методы действий Create()

В рамках процесса создания применяются два метода действий: первый (

HttpGet
) возвращает пустое представление для ввода новой записи, а второй (
HttpPut
) отправляет значения новой записи.

Вспомогательный метод GetMakes()

Вспомогательный метод

GetMakes()
возвращает список записей 
Make
в виде экземпляра
SelectList
и принимает в качестве параметра экземпляр реализации
IMakeRepo
:

Оригинальный текст книги читать онлайн бесплатно в онлайн-библиотеке Knigger.com