문제

I'm creating ASP.NET MVC4 C# application which accepts dynamic queries and generates razor views dynamically.

Application uses WebMatrix.Data.Query() to get data. This method returns IEnumerable<dynamic> . Result rows can contain bool? type properties whise value is null.

Those values are used in dynamically generated razor views with && , || and ! operators. Those operatos does not accept null boolean values, runtime exception occurs in this case.

I'm looking for a way to fix this. It seems that best way is to convert dynamic boolean null values to false.

I tried method

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

but got strange compile error

One or more types required to compile a dynamic expression cannot be found. Are you missing a reference?

in expression value == null

How to fix this so that code compiles ?

Another possibility would be to force &&, || and ! boolean operators to accept null values or define new boolean operators which accept null values. I dont know is this possible/reasonable?

도움이 되었습니까?

해결책

Add the Microsoft.CSharp reference to your project, and if it is already present then remove and re-add it as per this comment.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top