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()为左值," - "为右值.