Сопоставление URL-адресов с Razor Pages с использованием маршрутизации¶
Что такое маршрутизация?¶
Как мы видели в главе 3, приложение ASP.NET Core содержит конвейер промежуточного ПО, определяющий поведение приложения. Финальную обработку запроса выполняет компонент EndpointMiddleware в конце конвейера, вызывая обработчик страницы в Razor или метод действия в контроллере MVC.
Однако, за сопоставление запроса и конкретного обработчика или метода отвечает процесс, называемый маршрутизацией.
К примеру, в случае простого пути адреса, например, /Index, именно компонент маршрутизации определяет, что этому пути соответствует обработчик страницы в файле Index.cshtml.
Предположим, у нас есть интернет-магазин. Каждый товар в нем должен иметь отдельный адрес, и, если бы маршрутизации не существовало, мы могли бы использовать только два подхода:
- использовать разные страницы Razor для каждого товара — невозможно для реального ассортимента
- использовать одну страницу Razor и строку запроса, что приведет к уродливым адресам типа
/product?name=big-widgetили/product?id=12.
Благодаря маршрутизации можно иметь одну страницу Razor для обработки нескольких URL-адресов.
Маршрутизация в ASP.NET Core¶
Настройка шаблонов маршрутов для страницы Razor¶
Изучение синтаксиса шаблона маршрута¶
Генерация URL-адресов из параметров маршрута¶
Выбор обработчика страницы для вызова¶
Настройка соглашений с помощью Razor Pages¶
Советы автора о маршрутизации и ее настройке¶
- Избегайте замены шаблона маршрута на абослютный путь в директиве
@page; - избегайте добавления литеральных сегментов в директиву
@page, используйте файловую иерархию; - избегайте добавления дополнительных шаблонов маршрутов через
AddPageRoute(). Наличие нескольких способов доступа сбивает с толку; - добавьте параметры маршрута в директиву
@page, чтобы сделать маршруты динамическими; - рассмотрите возможность использования глобальных соглашений для изменения шаблонов маршрутов всех страниц.
Внимание!
Если случайно создать две страницы Razor с шаблонами маршрутов, перекрывающими друг друга - это приведет к ошибке времени выполнения.
Дата создания : 22 сентября 2022 г.