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

cshtml页面@Model.LocationID为null时报错 如何设置默认值为0

问题原因

你直接写@Model.LocationID ?? 0时,Razor解析器只会将@Model.LocationID识别为C#表达式输出,后续的?? 0会被当成普通静态文本处理,因此当LocationID为null时,就会渲染出空白+?? 0的错误内容。

解决方法

  • 方法1:用括号包裹完整C#表达式
    告诉Razor需要计算整个空合并表达式的值,直接修改代码为:
    var params = {LocationID : @(Model.LocationID ?? 0)};
    
    该写法会让Razor先完成C#表达式的计算,LocationID为null时自动输出0,非null时输出对应数值,完全符合需求。
  • 方法2:使用三元表达式(兼容旧版C#语法)
    如果你的项目使用的C#版本对空合并运算符支持有问题,也可以用三元表达式实现相同效果:
    var params = {LocationID : @(Model.LocationID.HasValue ? Model.LocationID.Value : 0)};
    
  • 方法3:ViewModel层预设默认值
    你也可以直接在EnrollmentModel定义时给LocationID设置默认值,从根源避免null的出现:
    // EnrollmentModel定义中修改属性声明
    public int? LocationID { get; set; } = 0;
    
    改完之后前端直接写@Model.LocationID就不会出现null导致的语法错误。

额外提示

所有需要Razor输出计算后的C#表达式的场景,都建议用@()包裹完整表达式,避免Razor和前端语法的解析歧义,减少类似问题出现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:06:08