【发布时间】:2012-01-16 16:07:53
【问题描述】:
我有以下内容,但使用 NullReferenceException 失败:
<td>@item.FundPerformance.Where(xx => fund.Id == xx.Id).FirstOrDefault().OneMonth ?? -</td>
OneMonth 定义为
public virtual decimal? OneMonth { get; set; }
并且在失败时它的值为 null。
我认为 Null Coalesce 运算符会测试它是否为 null,如果是,则返回运算符右侧的值?
我需要进行哪些更改才能完成这项工作?
【问题讨论】:
-
你确定不是
FirstOrDefault()选择的FundPerformance-object为null吗?如果是这种情况,那么您将尝试从为空的对象中获取引用,这会给出NullReferenceException -
我认为 Joakim 是对的。此外,您确实应该在 ViewModel 中进行此计算,并将答案传递到您的剃刀视图中。而且,如果您实际上是从您的视图中进行数据库查找,那么这非常顽皮! :-)
-
大家好。事实证明你俩都是正确的。我做了一个蠢事。只是为了减轻任何担忧,我保证我不会从视图中进行数据库调用! ViewModel 通过对 Repository 的 Service 调用填充到 Controller 中。
标签: c# asp.net-mvc razor null-coalescing-operator