路由覆盖在 asp.net core 3.1 剃须刀页面中不起作用
Posted
技术标签:
【中文标题】路由覆盖在 asp.net core 3.1 剃须刀页面中不起作用【英文标题】:Route Override not working in asp.net core 3.1 razor pages 【发布时间】:2020-07-15 05:44:16 【问题描述】:我正在使用Asp.Net Core 3.1 Razor pages
。我需要覆盖我所在区域的其中一个页面的路线。
我的Area
- Blog
中有Home
页面,当前路线是localhost/blog/home
。我需要将其更改为localhost/blog
。我在同一个博客区域中有一个Index
页面,但它有一个路由参数。所以它将是localhost/blog/my-blog-name
。而且这不会干扰localhost/blog
我在ConfigureServices
中添加了startup.cs
中的设置
services
.AddRazorPagesOptions(options =>
options.Conventions.AddAreaPageRoute("Blog", "/", "/blog/home");
);
这是我的文件夹结构,
但是当我导航到localhost/blog
时,我得到一个404
未找到。请帮忙看看我哪里错了。
【问题讨论】:
【参考方案1】:我的
Area
-Blog
中有主页,当前路线是localhost/blog/home
。我需要将其更改为localhost/blog
。我在同一个博客区域有一个Index
页面,但它有一个路由参数。当我导航到本地主机/博客时,我得到一个 404 未找到。
如果你查看AddAreaPageRoute method的定义,你会发现它带有区域名称、页面名称和路由模板,如下所示。
.AddAreaPageRoute("area_name_here", "page_name_here", "route_here")
根据您的要求和代码,我们可以发现您没有正确配置到页面的指定路由,并且如果您的博客区域的Index
页面接受了必需的(非可选)路由参数,则会导致404错误当你浏览localhost/blog
时。
要解决问题并达到要求,您可以尝试修改如下代码。
services.AddRazorPages()
.AddRazorPagesOptions(
options =>
options.Conventions.AddAreaPageRoute("Blog", "/home", "/blog");
);
测试结果
【讨论】:
以上是关于路由覆盖在 asp.net core 3.1 剃须刀页面中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core 3.1 Razor 页面路由不明确匹配异常
如何将两个数组作为 POST 请求参数从 AJAX 发送到 MVC 控制器(ASP .NET Core 3.1 剃须刀)?