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
相关产品推荐
相关产品推荐

