多租户剃须刀页面

时间:2019-02-13 21:18:29

标签: asp.net-core razor-pages

寻找一种简便的方法来构建多租户剃须刀页面。寻找一个区域中所有页面的网址格式类似于\{Tenant}\{Page}。通过RazorPagesOptions约定在末尾添加路由参数相当容易。您如何在开始时添加参数?

1 个答案:

答案 0 :(得分:0)

您可以使用IPageRouteModelConvention interface为每个路由添加代表租户的路由参数的前缀。创建一个实现该接口的类,然后重写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());
})