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

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 626 627 628 629 630 631 632 633 634 ... 642

@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. Запустив приложение и перейдя по ссылке <a href="https://localhost:5001/Cars/Details/1">https://localhost:5001/Cars/Details/1</a>, вы увидите экран, показанный на рис. 31.6.

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

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

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

@model Car

@{

    ViewData[&quot;Title&quot;] = &quot;Create&quot;;

}

&lt;h1&gt;Create a New Car&lt;/h1&gt;

&lt;hr/&gt;

&lt;div class=&quot;row&quot;&gt;

  &lt;div class=&quot;col-md-4&quot;&gt;

    &lt;form asp-controller=&quot;Cars&quot; asp-action=&quot;Create&quot;&gt;

      &lt;div asp-validation-summary=&quot;ModelOnly&quot; class=&quot;text-danger&quot;&gt;&lt;/div&gt;

<b>      @Html.EditorForModel()</b>

      &lt;div class=&quot;form-group&quot;&gt;

        &lt;button type=&quot;submit&quot;

          class=&quot;btn btn-success&quot;&gt;Create &lt;i class=&quot;fas fa-plus&quot;&gt;&lt;/i&gt;

        &lt;/button&gt;&nbsp;&nbsp;|&nbsp;&nbsp;

        &lt;item-list&gt;&lt;/item-list&gt;

      &lt;/div&gt;

    &lt;/form&gt;

  &lt;/div&gt;

&lt;/div&gt;

<b>@section Scripts {</b>

<b>    &lt;partial name=&quot;_ValidationScriptsPartial&quot; /&gt;</b>

<b>}</b>

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

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

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

В рамках процесса создания применяются два метода действий: первый (HttpGet) возвращает пустое представление для ввода новой записи, а второй (HttpPut) отправляет значения новой записи.

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

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

1 ... 626 627 628 629 630 631 632 633 634 ... 642
На этой странице вы можете бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю бесплатно.
Похожие на Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю книги

Оставить комментарий