我正在使用匿名类型来表示对象,以便我可以使用Json()方法将其转换为JSON格式。以下是我的代码示例。匿名类型“可为空的对象必须具有值”错误
“MoviesList”变量只是Objects.Movie类型的对象列表。
var result = new List<object>();
foreach (Objects.Movie movie in MoviesList)
{
result.Add(new
{
CompletedTime = (movie.CompletedTime == null ? new Nullable<DateTime>() : movie.CompletedTime),
Genre = movie.Genre,
Title = movie.Title,
Director = movie.Director
});
}
return Json(result, JsonRequestBehavior.AllowGet);
之前,我编写了代码,以便匿名类型中的CompletedTime属性等于Movie对象中的CompletedTime属性。
但是,当我运行该操作时,MoviesList中的CompletionTimeTime属性为null(因为未观看电影,因此尚未完成)中的Movie对象,我得到一个System.InvalidOperationException异常:Nullable对象必须有一个值。
因此,我试图将其更改为上面的代码,但仍然得到相同的错误。
如果电影还没有完成,我想要一个空值,但我得到这个错误。有什么方法可以解决这个问题,还是我应该尝试一种不同的方法?
movie.CompletedTime的类型是“DateTime?”
编辑:每当我调试此代码,调试器进入foreach循环,并迭代。但是,如果迭代中Objects.Movie对象包含值为null的属性CompletedTime(movie.CompletedTime),它会捕获错误并将其返回给调用上述代码的JsonResult类型方法,并返回捕获的错误
堆栈跟踪低于:
at System.Nullable`1.get_Value()
at WebService.Controllers.DataController.GenerateMovieList(DateTime date, String classID) in C:\WebService\Controllers\DataController.cs:line 212
at WebService.Controllers.DataController.GetMovieList(String Date, String ClassID) in C:\WebService\Controllers\DataController.cs:line 133
'movie.CompletedTime'是什么类型? – 2015-02-09 20:06:30
您确定您使用的JSON编写器可以处理空值吗? – 2015-02-09 20:07:57
我明白'CompletedTime'不能为空。如果'movie.CompletedTime'为空,它应该有什么价值?可以使'CompletedTime'为空或将其设置为最小值。 – 2015-02-09 20:11:58