Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET核心3:如何从一个特定区域的路由(url)中删除区域?_C#_Asp.net Core_Razor Pages_Asp.net Core 3.0 - Fatal编程技术网

C# ASP.NET核心3:如何从一个特定区域的路由(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", "/*", "*");

如何从一个特定区域的路由(url)中删除区域

一个选项是以这种方式配置
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());