多租户剃刀页面

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());
})