0

我有一个 ASP.NET Core 3.1 Web 应用程序,它使用具有以下路由约定的 Razor 页面:{tenantId}/{Page}. 这是通过以下文件夹路由模型约定设置的:

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

现在来了下一个问题:生成链接。

例如,在我的一个页面的 Razor 页面视图中,我有以下代码段:

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

这当然不再生成正确的链接,因为缺少tenantId 参数。为了解决这个问题,我可以执行以下操作:

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

然而,这是相当多的开销,因为我需要对每个链接都这样做。

ASP.NET Core 是否有任何系统可以在它生成的每个链接中自动注入tenantId 前缀?还是自动提供tenantId 路由值?我可以配置任何过滤器或约定来完成此操作?

4

0 回答 0