【问题标题】:Add Route Parameter to all Razor Pages in an Area将路由参数添加到区域中的所有 Razor 页面
【发布时间】:2021-09-04 13:53:35
【问题描述】:

我正在尝试将路由参数添加到 Razor 页面区域中的所有页面,以便区域中的每个 URL 都有一个 OrgId,例如/dashboard/{orgId}/{page}/{route}。我可以使用AddAreaPageRoute 添加它们,如下所示,但我不禁觉得有一种方法可以将其应用于所有页面,而无需为区域中的每个页面定义一个条目。有没有办法为区域中的所有页面创建路由?

.AddRazorPages(options =>
{
    options.Conventions.AddAreaPageRoute("Dashboard", "/Index", "Dashboard/{orgId}");
    options.Conventions.AddAreaPageRoute("Dashboard", "/AddItem", "Dashboard/{orgId}/AddItem");
    options.Conventions.AddAreaPageRoute("Dashboard", "/Items", "Dashboard/{orgId}/Items");
    options.Conventions.AddAreaPageRoute("Dashboard", "/Items/Index", "Dashboard/{orgId}/Items/{id}");
})

【问题讨论】:

  • 嗨@RichMercer,有关于这个案例的最新消息吗?
  • 谢谢,我看过那些文档,但我想我已经把自己翻了个身,试图弄清楚我再也看不到解决方案了。不过,您的答案非常有效。

标签: asp.net-core razor-pages


【解决方案1】:

您可以像下面这样更改您的代码:

services.AddRazorPages(options =>
        {
            options.Conventions.AddAreaFolderRouteModelConvention("Dashboard", "/", model =>
            {
                foreach (var selector in model.Selectors)
                {
                    var c = selector.AttributeRouteModel.Template.ToString();
                    selector.AttributeRouteModel = new AttributeRouteModel
                    {
                        Order = -1,
                        Template =c.Replace("Dashboard", "Dashboard/{orgId}")

                    };
                }
            });
         });

您可以在doc中查看详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    • 2018-07-07
    • 2019-12-15
    • 2018-10-16
    • 2020-04-03
    相关资源
    最近更新 更多