Mir-knigi.info
mir-knigi.info » Книги » Компьютеры и интернет » Базы данных » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

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

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

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).

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

Метод действия 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
, если пользователь решит обновить страницу.

Если состояние модели не является допустимым, то список

SelectList
с записями
Make
добавляется в объект
ViewData
и сущность, которая была отправлена, посылается обратно представлению
Create
. Состояние модели тоже неявно отправляется представлению, так что могут быть отображены любые ошибки.

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

Создайте в каталоге

ViewsCars
новый файл представления по имени
Edit.cshtml
. Удалите весь сгенерированный код и добавьте следующую разметку:

@model Car

@{

    ViewData["Title"] = "Edit";

}

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

<hr />

<div class="row">

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

    <form asp-area="" asp-controller="Cars" asp-action="Edit"

      asp-route-id="@Model.Id">

      @Html.EditorForModel()

<b>      &lt;input type=&quot;hidden&quot; asp-for=&quot;Id&quot; /&gt;</b>

<b>      &lt;input type=&quot;hidden&quot; asp-for=&quot;TimeStamp&quot; /&gt;</b>

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

   &lt;button type=&quot;submit&quot; class=&quot;btn btn-primary&quot;&gt;

            Save &lt;i class=&quot;fas fa-save&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;

@section Scripts {

    &lt;partial name=&quot;_ValidationScriptsPartial&quot; /&gt;

}

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

@Html.EditorForModel()
и частичное представление
_ValidationScriptsPartial
. Однако оно еще содержит два скрытых элемента ввода для
Id
и
TimeStamp
. Они будут отправляться вместе с остальными данными формы, но не должны редактироваться пользователями. Без значений
Id
и
TimeStamp
не удалось бы сохранять изменения.

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

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

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


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

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


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

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

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


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