Razor Pages .NET Core 2.1 Дочерние маршруты - PullRequest
0 голосов
/ 12 февраля 2019

Я работаю над приложением .NET Core 2.1 Razor Pages и не могу понять, почему маршрутизатор не соответствует моим ожиданиям.В моем приложении объект Orchestration имеет коллекцию объектов Rules.Оркестровка определяется по запросу в БД с помощью Guid.

Мой Index.cshtml в папке Orchestration выглядит как

@page "{id:guid}"
@model Website.Pages.Orchestration.OrchestrationModel

и предсказуемо localhost/Orchestration/{guid} направляет на правильную страницу.

Моя цель - localhost/Orchestration/{guid}/rule/{ruleId}/edit, чтобы попасть в файл Edit.cshtml в папке Rule.Мои попытки близки, но .NET соответствует Orchestration/rule вместо Orchestration/{guid}/rule.Я пробовал несколько заклинаний, пытаясь добавить {orchestrationid}/{id} в мой Edit.cshtml в каталоге Rule, но он не работает.Это кажется возможным, я ценю любую помощь по тому, что мне не хватает.

note rule / Index.cshtml переименован в Edit

Файл Edit.cshtml выглядиткак

@page "{id}"
@model Website.Pages.Orchestration.Rule.RuleModel

Часть, которая не работает, пытается получить доступ к дочерним маршрутам

enter image description here

1 Ответ

0 голосов
/ 13 февраля 2019

Что вы на самом деле хотите сделать, так это переопределить систему маршрутизации по умолчанию, которая полагается на сопоставление URL-адресов с путями к файлам.Вы можете сделать это, указав переопределить шаблон маршрута как часть директивы @page.Шаблоны переопределения маршрута имеют префикс с опцией тильда (~) и косой чертой, поэтому для вас должно работать следующее:

@page "/Orchestration/{id:guid}/rule/{ruleId:int}/edit"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...