在 .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
下> 文件夹是与区域文件夹处于同一级别的页面。即区域和主页文件夹(页面)都是主文件夹的直接子级。
注释:
- 当我访问
http://localhost/identity/Account/login
时 - 它运行良好 - 当我在添加页面
/
的显示模板登录中添加属性路由时,它工作正常。
最佳答案
对于区域下的页面,可以使用AddAreaPageRoute
方法添加页面约定:
您可以检查以下代码:
builder.Services.AddRazorPages().AddRazorPagesOptions(options =>
{
options.Conventions.AddPageRoute("/Home/Index", "homeindex");
options.Conventions.AddAreaPageRoute("Manage","/Admin/AdminIndex", "login");
}
);
结果是这样的:
更多详细信息,请参见Razor Pages Routing和 Razor Pages route and app conventions in ASP.NET Core .
关于asp.net-core - ASP.NET Core 6 razor页面路由不同区域内的默认页面路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70914637/