2009-06-23 51 views
0

我遇到了一個問題,試圖修改我自己還沒有構建的表單。c#在同一字段上使用兩個驗證器

窗體有一個日期值的asp:input字段,通過requiredFieldVal和rangeVal進行檢查。 rangeVal的類型設置爲「日期」和最小值2000-01-01:最大值3000-01-01

現在爲了解決這個問題,我嘗試添加以便用戶也可以輸入日期換句話說沒有「 - 」的形式爲「20000101」。

我試着添加另一個rangeVal整數類型和最小值,最大值,並把它們都在同一個ValidationGroup,但沒有奏效。

如何讓用戶在日期輸入字段中同時使用兩種格式(其中之一)。

預先感謝您!

回答

0

您可以使用正則表達式驗證程序代替範圍驗證程序。我和Regex有點生疏,但我相信你可以在這裏找到一些東西。

http://www.regular-expressions.info/

下面是日期頁面的鏈接:

http://www.regular-expressions.info/dates.html

試試這個,我認爲它會工作。如果沒有,讓我知道,我將修正它的工作:

((19|20)\d\d[- /.](0[1-9]|1[012])[-/.](0[1-9]|[12][0-9]|3[01])|((19|20)\d\d(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01]))) 

另一篇文章提出了一個點這個表達式不會驗證一些無效的日期,就像二月31在這種情況下,我只想創建驗證從正則表達式驗證器繼承的類並重寫EvaluateIsValid方法並檢查它是否爲實際日期。這允許大部分驗證在客戶端完成,備份在服務器級別,無論如何應該進行二級驗證。

+0

一個非常基本的面具將^ \ d {4} [ - ] \ d {2}?[ - ] \ d {2} $由於日期驗證,試圖做這一切正則表達式將導致?瘋狂,難以理解的表達。 – 2009-06-23 12:22:15

2

當您使用多個驗證控件驗證單個控件時,所有驗證控件都必須通過。

你可以使用一個正則表達式(正如凱文指出的那樣),但是做你需要的驗證(檢查該值是一個有效的DateTime對象並且在指定的範圍內)將很難乾淨地完成。

我建議編寫自己的CustomValidator控制,然後用它來驗證你的價值觀,但是你想。

相關問題