在文件夹的Razor页面中需要路由值

时间:2019-02-07 20:12:22

标签: asp.net-mvc asp.net-core razor-pages

在ASP.NET Core Razor Pages中,如何设置文件夹的路由以要求显示特定的路由ID?这是我的文件夹结构:

[Pages]
 - Index.cshtml
 - GeneralPage.cshtml
 - [Company]
    - Billing.cshtml
    - Manage.cshtml
    - Users.cshtml

“公司”文件夹中的任何页面在页面名称之前均应具有路由参数(integer {companyId})。以下都是有效的请求:

  • /索引
  • / GeneralPage
  • / Company / 1234 / Billing
  • / Company / 1234 / Manage
  • / Company / 1234 / Users

以下内容将失败:

  • /公司/帐单
  • /公司/管理
  • /公司/用户

AddFolderRouteModelConvention听起来很有前途,但对我来说并不明显。

关于实现上述路由的最直接方法的任何建议吗?

1 个答案:

答案 0 :(得分:0)

这不是一般的解决方案,但适用于上面的简单布局:

options.Conventions.AddFolderRouteModelConvention("/Company", model =>
{
    Regex templatePattern = new Regex("^Company/");
    foreach (var selector in model.Selectors)
    {
        selector.AttributeRouteModel.Template =
            templatePattern.Replace(selector.AttributeRouteModel.Template, "Company/{companyId}/");
    }
});