【问题标题】:Number validation in required field validator必填字段验证器中的数字验证
【发布时间】:2010-11-26 12:59:43
【问题描述】:

是否可以将数字验证放在 asp.net 文本框中的必填字段验证器中?

【问题讨论】:

    标签: asp.net validation


    【解决方案1】:

    您应该使用CompareValidator,例如:

    <asp:TextBox ID="txt" runat="server />
    <asp:CompareValidator ID="cv" runat="server" ControlToValidate="txt" Type="Integer"
       Operator="DataTypeCheck" ErrorMessage="Value must be an integer!" />
    

    如果您想要简单的数据类型检查,这是最自然的选择。否则,如果您想验证范围,请使用 RangeValidator 建议。如果您需要某种模式,请使用RegularExpressionValidator

    请注意,您还需要添加 RequiredFieldValidator,因为某些验证器将允许空白条目。

    【讨论】:

    • 我将此验证器附加到 ValidationGroup="Form"。但我仍然能够提交表单而不会引发验证错误。有什么建议吗??
    • @Dr.MAF 您是否还在最后一行添加了RequiredFieldValidator?它可以防止空白条目。
    • 是的。提交后,如果文本框为空,RequiredValidators 会正确触发,但如果条目是字母,则 CompareValidator 不会触发。
    • 好的,好的。我发现了。我有一个错字。 ValidationGroup="From" 而不是 "Form"。
    【解决方案2】:

    实际上,您只需要一个正则表达式验证器即可使用ValidationExpression = "^\d+?$"

    【讨论】:

    • * ValidationExpression = @"^\d+?$"
    【解决方案3】:

    也许您可以使用附加到该文本框的 RangeValidator,将 Type 设置为 Integer 或 wathever。

    RangeValidator class on MSDN

    【讨论】:

    【解决方案4】:

    另一种可能性是使用 RegexpValidator 并添加一个正则表达式,以确保其中有 1 个或多个数字,例如:

    RegularExpressionValidator regexpvalidator = new RegularExpressionValidator(); 
    regexpvalidator.ID = "RegularExpressionValidator1"; 
    regexpvalidator.ValidationExpression = "\d+"; 
    regexpvalidator.ControlToValidate = "YourControl"; 
    regexpvalidator.ErrorMessage = "Please specify a digit"; 
    regexpvalidator.SetFocusOnError = true; 
    

    【讨论】:

    • 不,RequiredFieldValidator 以外的验证器(可能还有 CustomValidator)将忽略空输入。
    【解决方案5】:

    不,RequiredFieldValidator 只能验证该字段是否包含某些内容。

    如果您想验证该字段是否仅包含数字,您可以使用带有模式 "\d+" 的 RegularExpressionValidator。

    【讨论】:

      【解决方案6】:

      RequiredFieldValidator 只检查字段是否填写。它不关心什么。

      您将需要一个额外的 CompareValidator,它的 Operator 设置为 DataTypeCheck,Type 设置为 Integer。 请注意,两者都需要:CompareValidator 将忽略空输入。

      【讨论】:

        【解决方案7】:

        是的,像这样:

        <asp:TextBox ID="tb" runat="server"></asp:TextBox>
        <asp:RangeValidator ControlToValidate="tb" Type="Integer"></asp:RangeValidator>
        

        【讨论】:

        • 这会引发与未指定 MaximumValue 相关的异常。
        猜你喜欢
        • 2013-03-23
        • 1970-01-01
        • 2011-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多