我已經通過服務層連接了我的驗證,並且我的Birthdate屬性如下所示。ASP.NET MVC2正則表達式的奇怪驗證問題(DataAnnotations)
<DisplayName("birthdate")> _
<RegularExpression("^\d{2}\/\d{2}\/\d{4}$", ErrorMessage:="Birthdate is not in the correct format.")> _
<DisplayFormat(ApplyFormatInEditMode:=True, ConvertEmptyStringToNull:=True, DataFormatString:="{0:MM/dd/yyyy}")> _
Public Property BirthDate As DateTime
如果我輸入類似12/12/1990
客戶端驗證工作正常,但是當表單提交,服務器端驗證旅行,我告訴項是無效的。我使用jQuery-UI Datepicker輸入日期,但是當我禁用datepicker時,問題仍然存在。
我在這裏錯過了什麼嗎?我認爲客戶端和服務器端將是一回事。
事後反思。
難道是因爲我在我的SQL Server數據庫中使用
datetime2(0)
?
我測試了上述理論無濟於事......同樣的問題。
編輯:
如果我刪除
<RegularExpression("^\d{2}\/\d{2}\/\d{4}$", ErrorMessage:="Birthdate is not in the correct format.")>
然後提交表單。這顯然是與正則表達式有關。
編輯:
下面的代碼也不管用,但我不知道是否有修改的ModelState之前它傳遞給isValid方法來正確地設置日期的方法嗎?
Dim birthdate As String = user.BirthDate
ModelState.Item("BirthDate") = DateTime.Parse(birthdate)
是的,但我也嘗試過在數據庫中的「日期」字段,它不指望時間字段。有沒有更好的方法來驗證輸入? – 2010-06-27 13:51:44
您用於存儲數據庫中的字段的類型與模型綁定之間沒有關係。 – 2010-06-27 15:59:41
我更新了一下我的問題。在傳遞給IsValid之前想知道修改ModelState Item。 – 2010-06-27 17:04:05