如何将动态null布尔值转换为false

时间:2014-05-13 19:19:21

标签: c# asp.net-mvc-4 c#-4.0 razor razor-2

我正在创建ASP.NET MVC4 C#应用程序,它接受动态查询并动态生成剃刀视图。

应用程序使用WebMatrix.Data.Query()来获取数据。此方法返回IEnumerable<dynamic>。 结果行可以包含bool?类型属性whise值为null。

这些值用于动态生成的剃刀视图中&amp;&amp; ,||而且!运营商。 那些operatos不接受null布尔值,在这种情况下会发生运行时异常。

我正在寻找解决此问题的方法。 似乎最好的方法是将动态布尔值null转换为false。

我试过方法

    public static dynamic BooleanNullToFalse(dynamic value)
    {
        if (value == null && value is bool?)
            return false;
        return value;
    }

但是编译错误

  

编译动态表达式所需的一种或多种类型不能   找到。你错过了参考吗?

表达式value == null

中的

如何解决此问题以便代码编译?

另一种可能性是强制&&||!布尔运算符接受空值或定义 接受空值的新布尔运算符。我不知道这可能/合理吗?

1 个答案:

答案 0 :(得分:1)

将Microsoft.CSharp引用添加到项目中,如果它已经存在,则按照this comment删除并重新添加它。