多租户剃刀页面
Multi Tenant Razor Page
正在寻找构建多租户剃刀页面的简单方法。寻找区域中所有页面的 url 模式类似于 \{Tenant}\{Page}
。通过 RazorPagesOptions Conventions 在末尾添加路由参数相当容易。开头的param怎么加?
您可以使用 IPageRouteModelConvention interface 为每个路由添加代表租户的路由参数作为前缀。创建一个实现该接口的 class,然后重写 Apply
方法,类似于以下内容(未测试):
public class CustomPageRouteModelConvention : IPageRouteModelConvention
{
public void Apply(PageRouteModel model)
{
foreach (var selector in model.Selectors.ToList())
{
selector.AttributeRouteModel.Template = "{tenant}/" + selector.AttributeRouteModel.Template ;
}
}
}
然后在 ConfigureServices
中注册您的实现:
services.AddMvc().AddRazorPagesOptions(options =>
{
options.Conventions.Add(new CustomPageRouteModelConvention());
})
正在寻找构建多租户剃刀页面的简单方法。寻找区域中所有页面的 url 模式类似于 \{Tenant}\{Page}
。通过 RazorPagesOptions Conventions 在末尾添加路由参数相当容易。开头的param怎么加?
您可以使用 IPageRouteModelConvention interface 为每个路由添加代表租户的路由参数作为前缀。创建一个实现该接口的 class,然后重写 Apply
方法,类似于以下内容(未测试):
public class CustomPageRouteModelConvention : IPageRouteModelConvention
{
public void Apply(PageRouteModel model)
{
foreach (var selector in model.Selectors.ToList())
{
selector.AttributeRouteModel.Template = "{tenant}/" + selector.AttributeRouteModel.Template ;
}
}
}
然后在 ConfigureServices
中注册您的实现:
services.AddMvc().AddRazorPagesOptions(options =>
{
options.Conventions.Add(new CustomPageRouteModelConvention());
})