2010-02-12 34 views
3

我想使用數據註釋來驗證日期時間字段,但我遇到了問題。據對MSDN文檔(http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.rangeattribute.aspx),下面應該做的工作英國日期時間字段的數據註釋範圍

[Range(typeof(DateTime), "1/2/2004", "3/4/2004", 
    ErrorMessage = "Value for {0} must be between {1} and {2}")] 

然而,這標誌着我輸入爲無效的任何日期!

起初我以爲它不是拿起英國的日期(當我試圖26/2/2004),但我甚至無法使用日期,如2/2/2004。

我正在使用MVC2中的數據註解,並使用MicrosoftAjax框架進行客戶端驗證。

有什麼建議嗎?

感謝

回答

2

好吧,幾年過去了,我重新討論了MVC4的這個問題,我可以告訴你它已經被解決了。

我創建了一個非常簡單的默認MVC4網站,並給了一個日期成員以下屬性

[Required] 
    [DataType(DataType.Date)] 
    [Range(typeof(DateTime), "1/2/2004", "3/4/2004", ErrorMessage = "Value for {0} must be between {1} and {2}")] 
    public DateTime BlogDate { get; set; } 

驗證現在工作完全根據英國數據系統,不允許日期2004年2月1日,允許日期4/3/2004或26/3/2004。

我使用的模板利用了代碼優先的EF4,但我沒有任何理由懷疑它一般沒有被修復,因爲JavaScript也正常工作。

所以如果你使用MVC2這可能仍然是一個問題,但我發現的最好的解決方案是使用MVC4,只要它是可用的。

+0

什麼是EF代碼優先與這個答案中的任何東西?此驗證永遠不會接近您的DAL。 – ProfK

1

據我所知RangeAttribute只能驗證在客戶端數量,你必須寫一個自定義的javascript驗證這個工作......

退房http://haacked.com/archive/2009/11/19/aspnetmvc2-custom-validation.aspx爲例如如何做到這一點。

+0

我現在的問題是我無法在服務器端工作!一旦服務器端正在工作,客戶端就是我必須要解決的問題。 –

+0

那麼,它適用於我,你如何顯示你的領域,爲了讓你的屬性工作,我認爲你必須使用Html.EditorFor或Html.Editor方法 –

相關問題