asp.net-core - ASP.NET Core 6 razor页面路由不同区域内的默认页面路由

标签 asp.net-core razor routes

在 .NET 6 Razor 页面中,当我使用以下代码来映射页面路由而页面位于默认页面文件夹或其子文件夹中时,它的工作原理非常完美:

builder.Services.AddRazorPages()
    .AddRazorPagesOptions(options =>
    {       
        options.Conventions.AddPageRoute("/Account/login", "login");
    }
    ).AddRazorRuntimeCompilation(); 

其中页面结构为Pages/Account/*.*

但是,当我尝试将页面的页面路由映射到不在默认页面文件夹下的区域时,它不起作用,如下所示:

builder.Services.AddRazorPages()
    .AddRazorPagesOptions(options =>
    {       
        options.Conventions.AddPageRoute("/identity/Account/login", "login");
    }
    ).AddRazorRuntimeCompilation(); 

鉴于此,/identity/Account/login 位于目录 /Areas/identity/pages/Account/login 和默认的 Pages 下> 文件夹是与区域文件夹处于同一级别的页面。即区域和主页文件夹(页面)都是主文件夹的直接子级。

注释:

  1. 当我访问http://localhost/identity/Account/login时 - 它运行良好
  2. 当我在添加页面 / 的显示模板登录中添加属性路由时,它工作正常。

最佳答案

对于区域下的页面,可以使用AddAreaPageRoute方法添加页面约定:

enter image description here

您可以检查以下代码:

builder.Services.AddRazorPages().AddRazorPagesOptions(options =>
    {
        options.Conventions.AddPageRoute("/Home/Index", "homeindex");
        options.Conventions.AddAreaPageRoute("Manage","/Admin/AdminIndex", "login");
    }
    );

结果是这样的:

enter image description here

更多详细信息,请参见Razor Pages RoutingRazor Pages route and app conventions in ASP.NET Core .

关于asp.net-core - ASP.NET Core 6 razor页面路由不同区域内的默认页面路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70914637/

相关文章:

Angular主路由配置无效(空路径)

jquery - 使用 javascript 调用 ViewComponents

c# - 如何在 Identity ASP.NET Core 2.1(Identity Scaffolded)中播种用户角色

razor - 为什么 Html Helper 为 View 模型子项的属性添加前缀?

asp.net-mvc - 动态加载程序集中的强类型 Razor View 不会在运行时编译

javascript - 错误 : . post() 需要回调函数但得到一个 [object Undefined] 不工作

asp.net-core - Fluent 验证在 Bootstrap 4 Modal 中不起作用

C# - 使用 Refit 传递 Web Api 对象

c# - 如何添加 Razor 背景图片

ruby-on-rails - 显示所有记录而不是实例记录的嵌套路由