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

标签 c# asp.net-mvc razor null-coalescing-operator

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

<td>@item.FundPerformance.Where(xx => fund.Id == xx.Id).FirstOrDefault().OneMonth ?? -</td>

OneMonth 定义为

public virtual decimal? OneMonth { get; set; }

失败时它的值为空。

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

我需要更改什么才能使其正常工作?

最佳答案

如您所写,razor 语法以“OneMonth”结尾。这 ??被解释为文本。要将其解释为 Razor ,您必须将整个语句包裹在 () 中,如下所示:

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

这仍然会给您带来错误:左边的运算符是小数,右边的运算符是字符串。因此,您可以呈现零而不是“-”,或者使用三元运算符,将 OneMonth.Value.ToString() 作为左值,将“-”作为右值。

关于c# - 如何让 Null Coalesce 运算符在 ASP.NET MVC Razor 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8444248/

相关文章:

c# - 如何在 Windows 应用程序中双向绑定(bind)对象到组合框

c# - 在 C# 中创建具有 XML 属性的数组

asp.net-mvc - mvc.net 中下拉列表的自动回发

ajax - mvc 3 razor 中的 tinymce,Ajax.ActionLinks 在第一次 ajax 调用后失败

c# - 日期算法 - 添加天数而不考虑闰年

c# - 如何根据传递到的服务解析接口(interface)

asp.net-mvc - Controller 操作参数是否自动映射到 View 输入标签?

c# - MVC 轮播不会自动滑动 Bootstrap MVC

jquery mobile多页面MVC 4

asp.net-mvc-3 - MSBuild + TeamCity 构建中缺少 index.cshtml View