我正在使用匿名類型來表示對象,以便我可以使用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