繁体   English   中英

路由覆盖在 asp.net 核心 3.1 razor 页面中不起作用

[英]Route Override not working in asp.net core 3.1 razor pages

我正在使用Asp.Net Core 3.1 Razor pages 我需要覆盖我所在区域的一个页面的路线。

我在我的AreaHome - Blog ,当前路线是localhost/blog/home 我需要将其更改为localhost/blog 我在同一个博客区域有一个Index页面,但它有一个路由参数。 所以它将是localhost/blog/my-blog-name 这不会干扰localhost/blog

我在startup.csConfigureServices中添加了设置

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM