【问题标题】:Regular Expression Validator does not validate empty textbox正则表达式验证器不验证空文本框
【发布时间】:2011-03-10 09:00:05
【问题描述】:

我想验证特定文本的文本框,它不能为空。但是正则表达式验证器不会验证文本框是否为 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>

【问题讨论】:

    标签: asp.net regex validation fluentvalidation fluentvalidation-2.0


    【解决方案1】:

    您应该将RegularExpressionValidatorRequiredFieldValidator 结合起来。

    如果其中任何一个失败,它将由于验证触发而阻塞。每个都有一个目的,RegularExpressionValidator 的目的是验证输入的文本而不是缺少文本。

    如果您想在一个验证器中完成所有操作,您可以使用CustomValidator 并设置ValidateEmptyText='true'。然后您可以使用 javascript 正则表达式进行检查。我会推荐这两个验证器,因为这是一种标准方法。

    【讨论】:

      【解决方案2】:

      我通常会按照您的建议进行操作,并且也有一个必需的验证器。这将允许您为每个规则提供不同的消息。

      我建议任何 Web 开发人员查看的另一个选项是 JQuery 验证插件。如果将此与 Fluent Validation 结合使用,您可以将业务对象的所有验证规则保存在一个地方,并且可以使用相同的规则在客户端和服务器端进行验证。

      JQuery Validation

      Fluent Validation

      【讨论】:

        【解决方案3】:

        您应该同时使用两者。如果 Value 为空,则不返回 Validation 错误在 ASP.NET 验证控件中很常见。您将在 System.ComponentModel.DataAnnotations 命名空间中的 Validation 属性中看到相同的行为。

        【讨论】:

        • +1。您可以使用自定义 DataAnnotationValidator 解决此问题。我写了一个,但它需要从基础对象继承。它非常有用:bit.ly/bcwher 它允许您向属性添加任意数量的 ValidationAttributes 并显示导致验证失败的第一条错误消息(就像多个 asp 验证器一样)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-08
        • 2016-08-24
        • 1970-01-01
        • 2011-06-28
        • 1970-01-01
        • 2011-10-29
        • 1970-01-01
        相关资源
        最近更新 更多