Перейти к содержанию

Возврат ответа с помощью ActionResults

IActionResult, возвращаемый обработчиком страницы, обрабатывается инфраструктурой Razor Pages для генерации ответа. Это позволяет отделить решение о том, какой ответ отправить, от непосредственно генерации ответа.
В ASP.NET Core есть много разных типов IActionResult:

  • Pageresult — генерирует HTML для связанной страницы в RazorPages;
  • ViewResult — генерирует HTML для заданного представления Razor при использовании контроллеров MVC;
  • RedirectToPageResult — отправляет ответ с кодом 302 для перенаправления на другую страницу;
  • RedirectResult — отправляет ответ с кодом 302 для перенаправления на указанный URL (необязательно на страницу Razor)
  • FileResult — возвращает ответ в виде файла;
  • Contentresult — возвращает предоставленную строку в качестве ответа;
  • StatusCodeResult — отправляет код состояния в качестве ответа, необязательно с содержимым;
  • NotFoundResult — в качестве ответа отправляет код 404.

Рассмотрим те из них, которые используются с Razor Pages.

PageResult и RedirectToPageResult

PageResult используется, когда нам нужно отобразить страницу с контентом. Формирование контента разбирается здесь.
При помощи RedirectToPageResult обычно создают поток переходов со страницы на страницу в процессе выполнения определенных действий, например, формирования и оформления заказа.
Pasted image 20220123133558.png

NotFoundResult и StatusCodeResult

NotFoundResult нужен, когда нужно вернуть код 404 (NotFound). Например, когда запрошенного товара нет в БД. Аналогичного результата можно добиться, используя StatusCodeResult и явно указав значение 404. Заметим, что в данном случае генерируется только код, который затем возвращается через конвейер промежуточного ПО, где его можно обработать при помощи компонента StausCodePagesMiddleware.

Создание классов ActionResult с использованием вспомогательных методов

Классы ActionResult можно создавать при помощи обычного синтаксиса:

return new PageResult();

Однако базовый класс PageModel предоставляет набор вспомогательных методов для генерации ответов. Обычно они называются согласно возвращаемому типу, с отбрасыванием суффикса -Result. Например, Page() создает PageResult, StatusCode() - StatusCodeResult, а RedirectToPage() - RedirectToPageResult.


Напомним, что возврат IActionResult не приводит к немедленной генерации ответа — он генерируется при выполнении IActionResult инфраструктурой Razor Pages.
Далее после генерации ответа он проходит через конвейер промежуточного ПО.


Последнее обновление : 16 апреля 2023 г.
Дата создания : 21 сентября 2022 г.

Комментарии

Комментарии