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正则表达式来执行检查。我会推荐两个验证器,因为这是一个标准方法。