我有一个 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 路由值?我可以配置任何过滤器或约定来完成此操作?