Чтение онлайн

на главную - закладки

Жанры

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

Представление 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>&nbsp;&nbsp;|&nbsp;&nbsp;

<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
:

internal SelectList GetMakes(IMakeRepo makeRepo)

=> new SelectList(makeRepo.GetAll, nameof(Make.Id), nameof(Make.Name));

Метод действия Create для GET

Метод действия

Create
для
GET
помещает в словарь
ViewData
список
SelectList
с записями
Make
и отправляет его представлению
Create
:

[HttpGet]

public IActionResult Create([FromServices] IMakeRepo makeRepo)

{

ViewData["MakeId"] = GetMakes(makeRepo);

return View;

}

Форму создания можно просмотреть по ссылке

/Cars/Create
(рис. 31.7).

Метод действия Create для POST

Метод действия

Create
для
POST
применяет неявную привязку модели для создания сущности
Car
из значений формы. Вот его код:

[HttpPost]

[ValidateAntiForgeryToken]

public IActionResult Create([FromServices] IMakeRepo makeRepo, Car car)

{

if (ModelState.IsValid)

{

_repo.Add(car);

return RedirectToAction(nameof(Details),new {id = car.Id});

}

ViewData["MakeId"] = GetMakes(makeRepo);

return View(car);

}

Атрибут

HttpPost
помечает метод как конечную точку приложения для маршрута
Cars/Create
, когда запросом является
POST
. Атрибут
ValidateAntiForgeryToken
, использует значение скрытого элемента ввода для
__RequestVerificationToken
чтобы сократить количество атак на сайт.

Экземпляр реализации

IMakeRepo
внедряется в метод из контейнера DI. Поскольку внедрение осуществляется в метод, применяется атрибут
FromServices
. Как вы наверняка помните, атрибут
FromServices
сообщает механизму привязки о том, чтобы он не пытался привязывать этот тип, и позволяет контейнеру DI узнать о необходимости создания экземпляра класса.

Сущность

Car
неявно привязывается к данным входящего запроса. Если состояние модели (
ModelState
) допустимо, тогда сущность
Car
добавляется в базу данных и пользователь перенаправляется на метод действия
Details
с использованием вновь созданного идентификатора
Car
в качестве параметра маршрута. Такой шаблон называется "отправка-перенаправление-получение" (
Post-Redirect-Get
). Пользователь выполняет отправку с помощью метода
HttpPost(Create
) и затем перенаправляется на метод
HttpGet(Details
), что предотвращает повторную отправку браузером запроса
POST
, если пользователь решит обновить страницу.

Поделиться:
Популярные книги

Сама себе хозяйка

Красовская Марианна
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Сама себе хозяйка

Ученичество. Книга 2

Понарошку Евгений
2. Государственный маг
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Ученичество. Книга 2

Надуй щеки!

Вишневский Сергей Викторович
1. Чеболь за партой
Фантастика:
попаданцы
дорама
5.00
рейтинг книги
Надуй щеки!

На границе империй. Том 9. Часть 4

INDIGO
17. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 4

Эволюционер из трущоб. Том 6

Панарин Антон
6. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Эволюционер из трущоб. Том 6

Идеальный мир для Лекаря 19

Сапфир Олег
19. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 19

Гарем на шагоходе. Том 1

Гремлинов Гриша
1. Волк и его волчицы
Фантастика:
боевая фантастика
юмористическая фантастика
попаданцы
5.00
рейтинг книги
Гарем на шагоходе. Том 1

Академия проклятий. Книги 1 - 7

Звездная Елена
Академия Проклятий
Фантастика:
фэнтези
8.98
рейтинг книги
Академия проклятий. Книги 1 - 7

Беглец

Бубела Олег Николаевич
1. Совсем не герой
Фантастика:
фэнтези
попаданцы
8.94
рейтинг книги
Беглец

Сломанная кукла

Рам Янка
5. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сломанная кукла

Офицер-разведки

Поселягин Владимир Геннадьевич
2. Красноармеец
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Офицер-разведки

Имя нам Легион. Том 9

Дорничев Дмитрий
9. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 9

(Не)нужная жена дракона

Углицкая Алина
5. Хроники Драконьей империи
Любовные романы:
любовно-фантастические романы
6.89
рейтинг книги
(Не)нужная жена дракона

Этот мир не выдержит меня. Том 2

Майнер Максим
2. Первый простолюдин в Академии
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Этот мир не выдержит меня. Том 2