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

如何在Razor Pages中定义带根值与Slug的路由?

问题分析与解决步骤

1. 修正@page指令格式

目标页面ProductCategory.cshtml的@page指令格式错误,当前写法@page {id}缺少引号会导致路由解析异常,需修改为:

@page "{id}"

这样Razor Pages才能正确捕获URL中的id参数(即你的Slug值)。

2. 调整页模型参数默认值

在页模型的OnGet方法中,给page参数设置默认值,避免未传递时出现默认值0的问题:

public void OnGet(string id, int page = 1)
{
    // 业务逻辑代码
}

同时确保id参数名称与路由模板中的{id}、标签助手的asp-route-id完全一致,保证参数绑定正常。

3. 验证标签助手与数据有效性

检查<a>标签生成的实际URL(可通过浏览器查看元素源码确认),同时确保category.Slug有有效值,若该字段为空或null,会导致id参数缺失,无法生成符合预期的链接。你的标签写法本身无问题,只要category.Slug正常,应该生成http://localhost:5001/productCategory/cars?page=1格式的链接。

4. 关于Razor Pages的路由配置

Razor Pages默认采用文件系统约定路由,不需要像MVC那样在Startup.cs(或.NET 6+的Program.cs)中配置MapRoute。页面路由由文件路径和@page指令共同决定:

  • 若页面文件位于Pages/ProductCategory.cshtml,默认路由为/ProductCategory
  • 加上@page "{id}"后,路由变为/ProductCategory/{id}

如果需要自定义全局路由规则,可在Program.cs中通过AddRazorPagesOptions配置,示例如下:

builder.Services.AddRazorPages(options =>
{
    // 给ProductCategory页面添加自定义路由规则
    options.Conventions.AddPageRoute("/ProductCategory", "{id}");
});

但你的场景无需额外配置,修正@page指令和参数默认值即可解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:50:25