System.InvalidOperationException必须包含ViewModel的值

时间:2010-04-06 11:36:56

标签: c# asp.net-mvc

我在控制器中有这个:

MyTestViewModel asdf = new MyTestViewModel 
{
    SomeTestDate = _b.GetSomeDate(SomeID).Value,
    SomeDate2 = SomeDate2.Value,
    SomeDate3 = SomeDate3.Value
    };

在函数“GetSomeDate”中我有:

var x = c.ExecuteScalar();

将x返回为DateTime?;

我得到InvalidOperationException,当函数返回null时,该对象必须包含值,它应该能够。

这里可能有什么问题?

/ M

1 个答案:

答案 0 :(得分:1)

在调用Value属性的getter之前,您必须检查可空类型是否包含值,否则您将获得异常:

var date = _b.GetSomeDate(SomeID);
MyTestViewModel asdf = new MyTestViewModel 
{
    SomeTestDate = date.HasValue ? date.Value : DateTime.MinValue,
    SomeDate2 = SomeDate2.Value,
    SomeDate3 = SomeDate3.Value
};

这是getter的相关源代码(用Reflector提取):

public T get_Value()
{
    if (!this.HasValue)
    {
        ThrowHelper.ThrowInvalidOperationException(ExceptionResource.InvalidOperation_NoValue);
    }
    return this.value;
}