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