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

Сопоставление 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 с шаблонами маршрутов, перекрывающими друг друга - это приведет к ошибке времени выполнения.


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

Комментарии

Комментарии