![](/img/trans.png)
[英]asp-controller and asp-action not working in ASP.NET Core 3.1 Razor Pages app
[英]Route Override not working in asp.net core 3.1 razor pages
我正在使用Asp.Net Core 3.1 Razor pages
。 我需要覆盖我所在区域的一个页面的路线。
我在我的Area
有Home
- Blog
,当前路线是localhost/blog/home
。 我需要将其更改为localhost/blog
。 我在同一个博客区域有一个Index
页面,但它有一个路由参数。 所以它将是localhost/blog/my-blog-name
。 这不会干扰localhost/blog
我在startup.cs
的ConfigureServices
中添加了设置
services
.AddRazorPagesOptions(options =>
{
options.Conventions.AddAreaPageRoute("Blog", "/", "/blog/home");
});
这是我的文件夹结构,
但是当我导航到localhost/blog
时,我得到一个404
未找到。 请协助我错在哪里。
我在我的
Area
有主页 -Blog
,当前路线是localhost/blog/home
。 我需要将其更改为localhost/blog
。 我在同一个博客区域有一个Index
页面,但它有一个路由参数。当我导航到本地主机/博客时,我得到一个 404 未找到。
如果你检查AddAreaPageRoute 方法的定义,你会发现它接受了区域名称、页面名称和路由模板,如下所示。
.AddAreaPageRoute("{area_name_here}", "{page_name_here}", "{route_here}")
根据您的需求和代码,我们可以发现您没有正确配置到页面的指定路由,并且如果您的博客区域的Index
页面接受了一个必需的(非可选的)路由参数,则在您浏览localhost/blog
时会导致 404 错误localhost/blog
。
要解决问题并达到要求,您可以尝试修改如下代码。
services.AddRazorPages()
.AddRazorPagesOptions(
options =>
{
options.Conventions.AddAreaPageRoute("Blog", "/home", "/blog");
}
);
测试结果
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.