将路由参数添加到一个区域中的所有 Razor 页面
Add Route Parameter to all Razor Pages in an Area
我正在尝试将路由参数添加到 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}");
})
您可以像下面这样更改您的代码:
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中查看详细信息。
我正在尝试将路由参数添加到 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}");
})
您可以像下面这样更改您的代码:
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中查看详细信息。