Возврат ответа с помощью 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 обычно создают поток переходов со страницы на страницу в процессе выполнения определенных действий, например, формирования и оформления заказа.

NotFoundResult и StatusCodeResult¶
NotFoundResult нужен, когда нужно вернуть код 404 (NotFound). Например, когда запрошенного товара нет в БД. Аналогичного результата можно добиться, используя StatusCodeResult и явно указав значение 404. Заметим, что в данном случае генерируется только код, который затем возвращается через конвейер промежуточного ПО, где его можно обработать при помощи компонента StausCodePagesMiddleware.
Создание классов ActionResult с использованием вспомогательных методов¶
Классы ActionResult можно создавать при помощи обычного синтаксиса:
Однако базовый класс
PageModel предоставляет набор вспомогательных методов для генерации ответов. Обычно они называются согласно возвращаемому типу, с отбрасыванием суффикса -Result. Например, Page() создает PageResult, StatusCode() - StatusCodeResult, а RedirectToPage() - RedirectToPageResult.
Напомним, что возврат IActionResult не приводит к немедленной генерации ответа — он генерируется при выполнении IActionResult инфраструктурой Razor Pages.
Далее после генерации ответа он проходит через конвейер промежуточного ПО.
Дата создания : 21 сентября 2022 г.