Настроить генерацию ссылок в Razor Page по соглашению - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть ASP. NET Core 3.1 веб-приложение, которое использует Razor Pages со следующим соглашением о маршруте: {tenantId}/{Page}. Это настраивается с помощью следующего Соглашения о модели маршрута папки:

services.AddMvc().AddRazorPagesOptions(opt =>
{
    opt.Conventions.AddFolderRouteModelConvention("/", opt =>
    {
        foreach (var selector in opt.Selectors)
        {
            selector.routeModel.Template = "{tenantId}/" + selector.routeModel.Template;
        }
    });
});

Теперь возникает следующая проблема: создание ссылок.

Например, в представлении Razor Page одной из моих страниц я иметь следующий фрагмент:

<a asp-page="/PageA">Page A</a>

Это, конечно, теперь не генерирует правильную ссылку больше, потому что отсутствует параметр tenantId. Чтобы решить эту проблему, я могу сделать следующее:

@{
    var tenantId = RetrieveTenantId();
}
<a asp-page="/PageA" asp-route-tenantId=@tenantId>Page A</a>

Это, однако, довольно много накладных расходов, потому что мне нужно было бы сделать это для каждой ссылки.

Делает ASP. NET У ядра есть какая-нибудь система для автоматического добавления префикса tenantId в каждую ссылку, которую он генерирует? Или для автоматического предоставления значения маршрута tenantId? Какие-либо фильтры или соглашения, которые я могу настроить для выполнения sh этого?

...