如何让Null Coalesce运算符在ASP.NET MVC Razor中工作?

Dav*_*Dev 15 c# asp.net-mvc null-coalescing-operator razor

我有以下内容,但它失败了NullReferenceException:

<td>@item.FundPerformance.Where(xx => fund.Id == xx.Id).FirstOrDefault().OneMonth ?? -</td>
Run Code Online (Sandbox Code Playgroud)

OneMonth 被定义为

public virtual decimal? OneMonth { get; set; }
Run Code Online (Sandbox Code Playgroud)

并且在失败时它的值为null.

我认为Null Coalesce运算符会测试它是否为null,如果是,则将值返回给运算符右侧?

为了使这项工作,我需要改变什么?

Mat*_*sca 26

你写的剃刀语法以"OneMonth"结尾.?? ?? 被解释为文本.要将它解释为razor,您必须将整个语句包装在()中,如下所示:

<td>@(item.FundPerformance.Where(xx => fund.Id == xx.Id).FirstOrDefault().OneMonth ?? "-")</td>
Run Code Online (Sandbox Code Playgroud)

这仍然会给你一个错误:左操作符是小数,右操作符是字符串.因此,您可以渲染零而不是" - "或使用三元运算符,其中OneMonth.Value.ToString()为左值," - "为右值.