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

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

Жанры

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

@model Car

@{

ViewData["Title"] = "Delete";

}

<h1>Delete @Model.PetName</h1>

<h3>Are you sure you want to delete this car?</h3>

<div>

@Html.DisplayForModel

<form asp-action="Delete">

<input type="hidden" asp-for="Id" />

<input type="hidden" asp-for="TimeStamp" />

<button type="submit" class="btn btn-danger">

Delete <i class="fas fa-trash"></i>

</button>&nbsp;&nbsp;|&nbsp;&nbsp;

<item-list></item-list>

</form>

</div>

В

представлении
Delete
тоже применяется вспомогательная функция
@Html.DisplayForModel
и два скрытых элемента ввода для
Id
и
TimeStamp
. Это единственные поля, которые отправляются в виде данных формы.

Методы действий Delete

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

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

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

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

Delete
для
GET
функционирует точно так же, как метод действия
Details
:

[HttpGet("{id?}")]

public IActionResult Delete(int? id)

{

var car = GetOneCar(id);

if (car == null)

{

return NotFound;

}

return View(car);

}

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

/Cars/Delete/1
(рис. 31.9).

< image l:href="#"/>

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

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

Delete
для
POST
просто отправляет значения
Id
и
TimeStamp
оболочке службы:

[HttpPost("{id}")]

[ValidateAntiForgeryToken]

public IActionResult Delete(int id, Car car)

{

if (id != car.Id)

{

return BadRequest;

}

_repo.Delete(car);

return RedirectToAction(nameof(Index));

}

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

Delete
для
POST
оптимизирован для отправки только значений, которые необходимы
инфраструктуре EF Core для удаления записи.

На этом создание представлений и контроллера для сущности

Car
завершено.

Компоненты представлений

Компоненты представлений — еще одно новое функциональное средство, появившееся в ASP.NET Core. Они сочетают в себе преимущества частичных представлений и дочерних действий для визуализации частей пользовательского интерфейса. Как и частичные представления, компоненты представлений вызываются из другого представления,но в отличие от частичных представлений самих по себе компоненты представлений также имеют компонент серверной стороны. Благодаря такой комбинации они хорошо подходят для решения задач, подобных созданию динамических меню (как вскоре будет показано), панелей входа, содержимого боковой панели и всего того, что требует кода серверной стороны, но не может квалифицироваться как автономное представление.

На заметку! Дочерние действия в классической инфраструктуре ASP.NET MVC были методами действий контроллера, которые не могли служить конечными точками, видимыми клиенту. В ASP.NET Core они не существуют.

Для

AutoLot
компонент представления будет динамически создавать меню на основе производителей, которые присутствуют в базе данных. Меню отображается на каждой странице, поэтому вполне логичным местом для него является файл
_Layout.cshtml
. Но
_Layout.cshtml
не имеет компонента серверной стороны (в отличие от представлений), так что любое действие в приложении должно предоставлять данные компоновке
_Layout.cshtml
. Это можно делать в обработчике события
OnActionExecuting
и в записях, помещаемых в объект
ViewBag
, но сопровождать подобное не будет простой задачей. Смешивание возможностей серверной стороны и инкапсуляции пользовательского интерфейса превращает такой сценарий в идеальный вариант для использования компонентов представлений.

Код серверной стороны

Создайте в корневом каталоге проекта

AutoLot.Mvc
новый каталог по имени
ViewComponents
и добавьте в него файл класса
MenuViewComponent.cs
. Подобно контроллерам классы компонентов представлений по соглашению именуются с суффиксом
ViewComponent
. И как у контроллеров, при обращении к компонентам представлений суффикс
ViewComponent
отбрасывается.

Добавьте в начало файла следующие операторы

using
:

using System.Linq;

using AutoLot.Dal.Repos.Interfaces;

using Microsoft.AspNetCore.Mvc;

using Microsoft.AspNetCore.Mvc.ViewComponents;

Сделайте класс общедоступным и унаследованным от

ViewComponent
. Компоненты представлений не обязательно наследовать от базового класса
ViewComponent
, но аналогично ситуации с базовым классом
Controller
наследование от
ViewComponent
упрощает большую часть работы. Создайте конструктор, который принимает экземпляр реализации интерфейса
IMakeRepo
и присваивает его переменной уровня класса. Пока что код выглядит так:

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

Ретроградный меркурий

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

Иван Московский. Том 5. Злой лев

Ланцов Михаил Алексеевич
5. Иван Московский
Фантастика:
попаданцы
альтернативная история
6.20
рейтинг книги
Иван Московский. Том 5. Злой лев

Хозяйка дома в «Гиблых Пределах»

Нова Юлия
Любовные романы:
любовно-фантастические романы
5.75
рейтинг книги
Хозяйка дома в «Гиблых Пределах»

Имперец. Том 1 и Том 2

Романов Михаил Яковлевич
1. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Имперец. Том 1 и Том 2

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

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

Бывшая жена драконьего военачальника

Найт Алекс
2. Мир Разлома
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Бывшая жена драконьего военачальника

Я Гордый часть 2

Машуков Тимур
2. Стальные яйца
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я Гордый часть 2

Последний Паладин. Том 4

Саваровский Роман
4. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 4

Ваше Сиятельство

Моури Эрли
1. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Ваше Сиятельство

Пушкарь. Пенталогия

Корчевский Юрий Григорьевич
Фантастика:
альтернативная история
8.11
рейтинг книги
Пушкарь. Пенталогия

"Дальние горизонты. Дух". Компиляция. Книги 1-25

Усманов Хайдарали
Собрание сочинений
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Дальние горизонты. Дух. Компиляция. Книги 1-25

Эксперимент

Юнина Наталья
Любовные романы:
современные любовные романы
4.00
рейтинг книги
Эксперимент

Темный Патриарх Светлого Рода 2

Лисицин Евгений
2. Темный Патриарх Светлого Рода
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Темный Патриарх Светлого Рода 2

Все ведьмы – стервы, или Ректору больше (не) наливать

Цвик Катерина Александровна
1. Все ведьмы - стервы
Фантастика:
юмористическая фантастика
5.00
рейтинг книги
Все ведьмы – стервы, или Ректору больше (не) наливать