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

Blazor Server中Int64类型路由参数配置引发NullReferenceException异常问题咨询

问题原因与解决方法

这个空引用异常的根源其实是Blazor路由约束对类型名称的识别规则——它只认C#的类型别名,不认.NET的完整类型名称。

你代码里用了@page "/customer/{BigId:Int64}",但Blazor路由系统并不知道Int64是什么约束类型,因为它只识别long(System.Int64的C#别名)。当路由系统无法解析这个约束时,参数绑定就会失败,进而在Router组件刷新时触发空引用异常。

解决方法很简单,只需调整路由约束:

  • 把路由约束里的Int64改成long
  • 参数定义可以保留Int64?或者换成long?,二者是完全等价的(只是写法不同)

修正后的代码如下:

@page "/customer"
@page "/customer/{id:int}"//正常工作
@page "/customer/{BigId:long}"//现在可以正常工作了

@code {
    [Parameter]
    public int? id { get; set; }//正常工作
    [Parameter]
    public long? BigId { get; set; }//或者写成Int64?也没问题
}

补充说明

Blazor路由支持的参数约束类型别名包括:bool、int、long、float、double、decimal、guid、string。所有约束都必须使用这些别名,不能用.NET的完整类型名称(比如Int32、Int64),否则都会导致参数绑定失败,引发类似的异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 22:27:50