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

Razor Pages重写路由遇RoutePatternException异常求助

解决方法

首先检查你的@page指令写法,确保它单独占据一行,不要和@model或其他指令混写在同一行。这是触发该异常最常见的原因,比如如果写成:

@page "/layouts/{layoutId:int}/save/{revisionId:int}" @model SaveModel

路由解析器会把后面的@model部分误判为路由模板的一部分,导致括号匹配异常。正确的写法应该是:

@page "/layouts/{layoutId:int}/save/{revisionId:int}"
@model YourProjectNamespace.SaveModel

接着验证页面模型类的参数定义是否与路由约束完全匹配,确保参数类型是int,并且作为请求处理方法的参数存在:

public class SaveModel : PageModel
{
    public void OnGet(int layoutId, int revisionId)
    {
        // 你的业务逻辑代码
    }
}

如果上述都没问题,尝试清理并重新生成项目:

  • 手动删除项目目录下的bin和obj文件夹
  • 执行命令:dotnet clean && dotnet build

另外确认Program.cs中正确配置了Razor Pages路由,确保app.MapRazorPages();语句存在且位置正确(在UseAuthorization()之后,app.Run()之前)。

如果去掉开头斜杠后路由不符合预期,是因为不带斜杠的模板是相对路由,会附加在页面的默认路由路径之后。比如你的页面如果在Pages/Layouts/Save.cshtml,默认路由是/layouts/save,使用@page "layouts/{layoutId:int}/save/{revisionId:int}"会生成/layouts/save/layouts/1/save/2这种不符合预期的URL,因此必须使用带开头斜杠的绝对路由模板来定义你想要的/layouts/1/save/2格式。

内容的提问来源于stack exchange,提问作者Jonas Kjær

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:45:27