You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET Core 3.1中配置Razor页面路由为do_stuff

解决Razor页面自定义路由问题

你之前用MapControllerRoute配置路由是错误的,这个方法是给MVC控制器用的,不适用于Razor页面,所以配置无效。以下是几种可行的解决方案:

方案1:直接在页面中指定路由(最简单)

在你的Razor页面文件(比如DoStuff.cshtml)顶部,修改@page指令,直接定义访问路径:

@page "/do_stuff"
@model DoStuffModel
<!-- 页面内容 -->

配置完成后,访问mydomain/do_stuff即可直接打开该页面。

方案2:全局配置路由约定

如果不想修改页面文件,可以在Startup.cs中通过路由约定统一配置:

  1. 在ConfigureServices方法中添加路由规则:
public void ConfigureServices(IServiceCollection services)
{
    services.AddRazorPages()
        .AddRazorPagesOptions(options =>
        {
            // 参数1:Pages文件夹下的页面相对路径(比如"/DoStuff")
            // 参数2:自定义的访问路由
            options.Conventions.AddPageRoute("/DoStuff", "/do_stuff");
        });
}
  1. 确保Configure方法中启用Razor页面路由(不要用MapControllerRoute):
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // 其他中间件(如异常处理、静态文件等)配置...

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapRazorPages(); // 启用Razor页面路由
    });
}

方案3:重命名页面文件(如果允许)

如果当前页面文件名是DoStuffModel.cshtml(导致默认路由为/do_stuffModel),直接将文件重命名为DoStuff.cshtml。Razor页面默认路由会将文件名转为小写,这样无需额外配置就能通过mydomain/do_stuff访问。

注意:Razor页面的PageModel类名需和页面文件名匹配,比如DoStuff.cshtml对应DoStuffModel : PageModel,这是默认路由生效的前提。

内容的提问来源于stack exchange,提问作者Kevin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 13:50:08