【问题标题】:Route Override not working in asp.net core 3.1 razor pages路由覆盖在 asp.net core 3.1 剃须刀页面中不起作用
【发布时间】: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 未找到。请帮忙看看我哪里错了。

【问题讨论】:

    标签: asp.net-core razor-pages asp.net-core-3.1 asp.net-core-routing


    【解决方案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");
            }
        );
    

    测试结果

    【讨论】:

      猜你喜欢
      • 2020-07-11
      • 2020-10-14
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      • 2020-06-02
      • 1970-01-01
      • 2020-01-09
      相关资源
      最近更新 更多