Asp.net core 按约定自定义Razor页面中的链接生成
我有一个ASP.NET Core 3.1 web应用程序,它使用具有以下路由约定的Razor页面:Asp.net core 按约定自定义Razor页面中的链接生成,asp.net-core,razor,razor-pages,Asp.net Core,Razor,Razor Pages,我有一个ASP.NET Core 3.1 web应用程序,它使用具有以下路由约定的Razor页面:{tenantId}/{Page}。 这是通过以下文件夹路由模型约定设置的: services.AddMvc().AddRazorPagesOptions(opt=> { opt.Conventions.AddFolderRouteModelConvention(“/”,opt=> { foreach(可选选择器中的变量选择器) { selector.routeModel.Template=“{te
{tenantId}/{Page}
。
这是通过以下文件夹路由模型约定设置的:
services.AddMvc().AddRazorPagesOptions(opt=>
{
opt.Conventions.AddFolderRouteModelConvention(“/”,opt=>
{
foreach(可选选择器中的变量选择器)
{
selector.routeModel.Template=“{tenantId}/”+selector.routeModel.Template;
}
});
});
现在是下一个问题:生成链接
例如,在我的一个页面的Razor页面视图中,我有以下代码片段:
<a asp-page="/PageA">Page A</a>
A页
这当然不再生成正确的链接,因为缺少tenantId参数。
要解决此问题,我可以执行以下操作:
@{
var tenantId = RetrieveTenantId();
}
<a asp-page="/PageA" asp-route-tenantId=@tenantId>Page A</a>
@{
var tenantId=RetrieveTenantId();
}
A页
然而,这是相当大的开销,因为我需要为每个链接执行此操作
ASP.NET Core是否有任何系统可以在其生成的每个链接中自动注入tenantId前缀?或者自动提供租户路由值?
我可以配置任何筛选器或约定来完成此任务吗?您的启动设置在我的项目中不正确。您的asp.net core版本是什么?asp.net core 3.1。我有一个小的拼写错误,我刚刚纠正了。我有几天没在电脑前,所以我不能进一步测试它。