2012-02-11 102 views
8

所需錯誤我已經創建了我的asp.net MVC 3網站的模型,並有一個名爲DateOpened屬性:日期字段給上驗證

[Column("Date Opened")] 
     [Display(Name = "Date Opened:")] 
     [DataType(DataType.Date)] 
     [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")] 
     public DateTime DateOpened { get; set; } 

我沒有[必需]數據標註適用於它,但是當我嘗試保存表單時,它表示必填字段。在數據庫中它是空的。

請建議解決方案。

回答

15

這很正常。 DateTime是一個值類型,意味着它總是需要一個值。 ASP.NET MVC中的模型元數據提供程序自動將必需的屬性添加到不可爲空的數據類型。您可以使用可以爲空的DateTime:

[Column("Date Opened")] 
[Display(Name = "Date Opened:")] 
[DataType(DataType.Date)] 
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")] 
public DateTime? DateOpened { get; set; } 
+0

感謝您的回覆。我修改了模型,但現在我得到了這個轉換錯誤:不能隱式轉換類型'System.DateTime?'到'System.DateTime'。在我使用DateOpened – DotnetSparrow 2012-02-11 10:32:58

+1

@DotnetSparrow的網頁上存在明確的轉換(您是否缺少演員?),您如何使用此屬性?爲了訪問可空類型的值,你需要使用'.Value'屬性:'DateOpened.Value'。 – 2012-02-11 10:35:20