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

Выбор обработчика страницы для вызова

Уже упоминалось что маршрутизация заключается в сопоставлении URL-адресов с обработчиком, а также, чтоRoutingMiddleware выбирает страницу Razor на основе URL-адреса и шаблона маршрута. Однако, страницы Razor могут иметь несколько обработчиков, поэтому рассмотрим, как EndpointMiddleware выбирает, какой обработчик страницы вызвать.
Рассмотрим страницу SearchModel с тремя обработчиками.

public class SearchModel : PageModel
{
    public void OnGet() //Обрабатывает GET-запросы
    {
        ...
    }

    public Task OnPostAsync() //Обрабатывает POST запросы. Async в целях маршрутизации игнорируется
    {
        ...
    }

    public void OnPostCustomSearch() //Обрабатывает POST-запросы, в которых значение маршрута handler=CustomSearch
    {
        ...
    }
}

Когда EndpointMiddleware выполняет выбранную страницу Razor, то выбирает обработчик страницы на основе двух переменных:

Если не включить параметр маршрута в шаблон, handler будет браться из строки запроса: /search?handler=CustomSearch. Если добавить параметр в шаблон, например @page "{handler}", то будет использован запрос вида /search/customsearch.
Итак, конкретный обработчик выбирается по имени вида On{verb}[handler][Async].
Если ни один обработчик не подошел (например, нет обработчика OnDelete()), выполняется неявный обработчик, не содержащий логики; при этом просто возвращается ассоциированное представление Razor. Исключением является HTTP-метод HEAD: если явного обработчика OnHead() нет, выполняется OnGet(), если он существует.


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

Комментарии

Комментарии