2015-06-18 77 views
0

我正在查看我正在處理的項目的代碼庫,並且我在控制器中設置了一個方法,該方法通過填充具有月份和年份的列表來設置視圖,然後將它傳遞給視圖爲什麼我將當前月份和年份作爲DateTime的默認值?

ViewBag.ListOfYears = new SelectList(years, person.Date_of_Graduation.GetValueOrDefault().Year.ToString("00")); 

ViewBag.ListOfMonths = new SelectList(months, person.Date_of_Graduation.GetValueOrDefault().Month.ToString("00")); 

但是,當我查看實際頁面上的下拉列表時,默認情況下它的默認值爲06,2015爲默認值。我認爲DateTime Ojects的默認值是1,月份是0001,年份是0001。有人可以向我解釋爲什麼當前的月份和年份是在保管箱中的默認值?

+0

當你遇到這個問題時,你還沒有告訴我們'person.Date_of_Graduation.GetValueOrDefault()'的值是什麼。它實際上是'default(DateTime)'還是本月的日期?另外什麼是'Date_of_Graduation'類型?它絕對是'DateTime?'而不是某種類型的自定義類型?你說的對DateTime的默認是正確的(儘管我假設你已經通過測試或谷歌證實了你的評論是修辭)。 – Chris

+0

@Chris Um,Date_of_Graduation的類型爲Nullable ,並且person.Date_of_Graduation.GetValueOrDefault()的值爲2015年6月1日12:00:00 AM – FrostyStraw

+0

然後問題幾乎可以肯定的是Date_of_Graduation是不爲空。檢查Date_of_Graduation.HasValue是否爲真(我期望它是)。同樣'Date_of_Graduation.Value'很可能是那個日期。所以你正在爲錯誤尋找錯誤的地方。你的錯誤實際上是當你不期待它被設置的日期,而不是默認的不是你所期望的。 – Chris

回答

2

person.Date_of_Graduation的值不是null,或者在ModelState中有一個值,表示您將此選擇列表綁定到的任何屬性。例如,給定:

@Html.DropDownListFor(m => m.GraduationYear, (SelectList)ViewBag.ListOfYears) 

然後,如果一個值被設置爲任何的ViewBag.GraduationYearViewData["GraduationYear"]Request["GraduationYear"],或Model.GraduationYear(其中Model是您的視圖的模型實例),則該值將被設定爲在所選擇的值下拉。

相關問題