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

Razor页面@page路由带字符串Id参数无法打开如何解决

问题原因

ASP.NET Core(含Blazor)路由系统没有内置string类型的路由约束,路由参数默认使用字符串解析逻辑,手动添加string约束会触发不支持的报错。
此前跳转失败是因为原路由模板要求id必须为int类型,和你传入的字符串类型Id不匹配,导致路由无法命中。

解决方案

按照以下两步修改View页面代码即可:

  • 移除路由模板中的int约束,不需要额外声明字符串类型,直接保留参数名
  • 将接收参数的属性类型从int改为string,和传入的Id类型对齐

修改后的完整View页面代码如下:

@page "/usr/view/{id}"

<h3>View</h3>

@code {
    [Parameter] public string id { get; set; }
}
可选优化

如果你的字符串Id有明确的格式要求,可以使用其他内置路由约束在路由层做前置校验,避免无效请求进入业务逻辑:

  • 限制长度:@page "/usr/view/{id:length(1,50)}" 可限制Id长度为1~50位
  • 正则匹配:@page "/usr/view/{id:regex(^[a-zA-Z0-9_-]+$)}" 可限制Id只能包含字母、数字、下划线和中划线
  • 允许空值:如果Id支持为空,可将路由模板改为@page "/usr/view/{id?}",同时将参数属性改为可空字符串public string? id { get; set; }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 12:06:13