Требовать значение маршрута в Razor Pages для папки - PullRequest
0 голосов
/ 07 февраля 2019

В ASP.NET Core Razor Pages, как настроить маршрутизацию для папки, чтобы требовать наличия определенного идентификатора маршрута?Вот моя структура папок:

[Pages]
 - Index.cshtml
 - GeneralPage.cshtml
 - [Company]
    - Billing.cshtml
    - Manage.cshtml
    - Users.cshtml

Любая страница в папке «Компания» должна иметь параметр маршрута (integer {companyId}) перед именем страницы.Следующие запросы должны быть действительными:

  • / Index
  • / GeneralPage
  • / Company / 1234 / Billing
  • / Company / 1234 /Управление
  • / Компания / 1234 / Пользователи

Следующие ошибки не должны выполняться:

  • / Компания / Биллинг
  • / Компания / Управление
  • / Компания / Пользователи

AddFolderRouteModelConvention звучит многообещающе, но его использование не очевидно для меня.

Любые предложения посамый простой способ достижения маршрутизации выше?

1 Ответ

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

Это не общее решение, но работает для простого макета выше:

options.Conventions.AddFolderRouteModelConvention("/Company", model =>
{
    Regex templatePattern = new Regex("^Company/");
    foreach (var selector in model.Selectors)
    {
        selector.AttributeRouteModel.Template =
            templatePattern.Replace(selector.AttributeRouteModel.Template, "Company/{companyId}/");
    }
});
...