簡體   English   中英

c#在同一字段上使用兩個驗證器

[英]c# Use two validators on the same field

我在嘗試修改我自己尚未構建的表單時遇到了問題。

該表單具有日期值的asp:input字段,該字段由requiredFieldVal和rangeVal檢查。 rangeVal的類型設置為“日期”,最小值為2000-01-01:最大值為3000-01-01

現在要解決這個問題,我正在嘗試添加,以便用戶還可以輸入日期“ 20000101”的形式,換句話說,不用“-”。

我嘗試添加另一個具有Integer類型和min,max值的rangeVal,並將它們都放在同一個ValidationGroup中,但這沒有用。

我如何允許用戶在日期輸入字段中使用兩種格式(兩者之一)。

先感謝您!

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

您可以使用正則表達式(如Kevin指出的那樣),但是要進行所需的驗證(檢查值是否為有效的DateTime對象並在指定范圍內)將很難做到。

我建議編寫自己的CustomValidator控件,然后根據需要使用它來驗證您的值。

您可以使用正則表達式驗證器代替范圍驗證器。 我對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])))

另一篇文章提出了一點,該正則表達式將不會驗證某些無效的日期,如2月31日。在這種情況下,我將創建一個繼承自正則表達式驗證器的驗證類,並覆蓋EvaluateIsValid方法,並檢查它是否是實際的日期。 這允許大多數驗證在客戶端完成,而備份在服務器級別,無論如何應該進行輔助驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM