C# ASP.NET核心3:如何从一个特定区域的路由(url)中删除区域?
如何从一个特定区域的路由(url)中删除区域 一个选项是以这种方式配置C# ASP.NET核心3:如何从一个特定区域的路由(url)中删除区域?,c#,asp.net-core,razor-pages,asp.net-core-3.0,C#,Asp.net Core,Razor Pages,Asp.net Core 3.0,如何从一个特定区域的路由(url)中删除区域 一个选项是以这种方式配置AddRazorPages(它可以工作): 但是,我们是否可以选择在不遍历所有页面的情况下执行此操作 比如: serviceCollection.AddRazorPages( options => { options.Conventions.AddAreaPageRoute("MyArea", "/*", "*");
AddRazorPages
(它可以工作):
但是,我们是否可以选择在不遍历所有页面的情况下执行此操作
比如:
serviceCollection.AddRazorPages(
options =>
{
options.Conventions.AddAreaPageRoute("MyArea", "/*", "*");
// ...
});
您可以使用,一个实现IPageRouteModelConvention
的类,它有一个Apply
方法,您可以在其中更改路由模板(除其他外):
在ConfigureServices
中注册您的约定:
options.Conventions.Add(new MyCustomPageRouteModelConvention());
public void Apply(PageRouteModel model)
{
if(model.RelativePath.StartsWith("/Areas/MyArea"))
{
foreach(var selector in model.Selectors)
{
selector.AttributeRouteModel.Template = selector.AttributeRouteModel.Template.Replace("MyArea", string.Empty);
}
}
}
options.Conventions.Add(new MyCustomPageRouteModelConvention());