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

Blazor计算汽车销售总额时触发Nullable对象非空错误求助

解决Nullable object must have a value错误(计算可空decimal字段总和)

你的错误根源是直接强制转换可空decimal类型(decimal?)。模型里的Month1Sales和Month2Sales都是可空字段,当数据库中这两个字段存在null值时,用(decimal)@context.Month1Sales这种强制转换方式,本质是在访问可空类型的Value属性——而null状态的可空类型没有可用的Value,因此抛出Nullable object must have a value错误。

另外你的代码还有两处逻辑问题:

  • 调用Math.Round(Total, 3)后未将结果赋值回变量,等于白执行了四舍五入操作
  • 表格列中使用的TotalSales和你前面计算的Total变量无关联,等于没用到自己计算的值

修正后的代码示例

方式1:计算后直接在表格中使用结果

@{
    // 用空合并运算符给null字段设默认值0,避免转换报错
    decimal total = (context.Month1Sales ?? 0) + (context.Month2Sales ?? 0);
    total = Math.Round(total, 3);
}

<MudTd DataLabel="Total">@total</MudTd>

方式2:将计算结果赋值给模型的TotalSales字段(如需保存到数据库)

@{
    // 计算并赋值给TotalSales字段
    context.TotalSales = Math.Round((context.Month1Sales ?? 0) + (context.Month2Sales ?? 0), 3);
}

<MudTd DataLabel="Total">@context.TotalSales</MudTd>

也可以用GetValueOrDefault()替代空合并运算符,效果一致:

decimal total = context.Month1Sales.GetValueOrDefault() + context.Month2Sales.GetValueOrDefault();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:51:02