5

我想驗證特定文本的文本框,它不能爲空。但是,正則表達式驗證程序不驗證文本框是否爲BLANK。但是,它驗證我是否在文本框中鍵入內容。正則表達式驗證器不驗證空的文本框

即使文本框爲空,我如何使正則表達式觸發?

我應該同時使用Required Validator + Regex Validator嗎?謝謝。

<asp:TextBox ID="txtcard" runat="server" MaxLength="16"></asp:TextBox> 

<asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" 
ControlToValidate="txtcard" ErrorMessage="Please type credit card no" 
ValidationExpression="^\d{16}$"></asp:RegularExpressionValidator> 

回答

3

我通常會按照您的建議進行操作,並且還需要驗證器。這將允許您爲每個規則有不同的消息。

我建議任何Web開發人員看看的另一個選項是JQuery驗證插件。如果將此與Fluent驗證結合使用,則可以將您的業務對象的所有驗證規則保留在一個位置,並且您可以使用這些相同的規則在客戶端和服務器上進行驗證。

JQuery Validation

Fluent Validation

3

您應該同時使用兩者。如果值爲空,則不會返回驗證錯誤,這與ASP.NET驗證控件一樣。您將看到來自System.ComponentModel.DataAnnotations命名空間中Validation屬性的相同行爲。

+0

+1。你可以用自定義的DataAnnotationValidator來解決這個問題。我寫了一個,但它需要從一個基礎對象繼承。這非常有用:http://bit.ly/bcwher它允許您添加任意數量的ValidationAttributes到屬性,並顯示導致驗證失敗的第一條錯誤消息(因爲多個asp驗證器會) – 2010-06-30 21:59:17

4

您應該將RegularExpressionValidatorRequiredFieldValidator結合起來。

如果其中一個失敗,它將因驗證激發而阻塞。每個人都有一個目的,RegularExpressionValidator的目的是驗證輸入的文字,而不是缺乏文字。

如果您想在一個驗證器中完成所有操作,您可以使用CustomValidator並設置ValidateEmptyText='true'。然後,您可以使用JavaScript正則表達式來執行檢查。我會推薦兩個驗證器,因爲這是一個標準方法。