Определите необходимый параметр пути в середине маршрута с помощью страниц Razor?

#asp.net #asp.net-core #razor #razor-pages #.net-5

Вопрос:

На страницах Razor у меня следующая структура папок:

  • Области
    • Люди
      • Человек
        • Работа.cshtml
        • Индекс.cshtml

Страница Index.cshtml требует, чтобы идентификатор пользователя был включен в качестве параметра пути. Я определил необходимую директиву @page в файле cshtml. URL-адрес выглядит следующим образом:

www.website.com/people/person/24

Как я могу использовать директиву @page, чтобы определить страницу заданий следующим маршрутом?

www.website.com/people/person/24/jobs

Другими словами, как я могу сделать что-то подобное, если имя страницы определено как «Задания»?

@page "{personId}/{page}"

Использование зарезервированного шаблона маршрутизации {страница} приводит к возвращению закодированного маршрута, а не только имени страницы:

 24//Person//Jobs
 

Ответ №1:

Вы можете применить шаблон маршрута, который переопределяет шаблон маршрута по умолчанию, созданный системой маршрутизации, добавив к нему прямую косую черту / :

@page "/people/person/{personId:int}/jobs"

Смотрите здесь: https://www.learnrazorpages.com/razor-pages/routing#override-routes

Кроме того, я бы вообще избегал использования областей в приложениях Razor Pages. Вы можете получить те же преимущества маршрутизации, просто добавив вложенные папки в папку Страницы, без дополнительной сложности, которую добавляют области.