【问题标题】:using Asp.Net RangeValidator for Int64对 Int64 使用 Asp.Net RangeValidator
【发布时间】:2011-10-21 21:44:49
【问题描述】:

有没有办法将 RangeValidator 用于大数字(Int64 范围)?

【问题讨论】:

    标签: asp.net rangevalidator


    【解决方案1】:

    在查看后,仅使用 rangevalidator 就没有干净的方法可以做到这一点。我在下面列出了使用网络表单验证器的替代方案。

    HTML:

    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
      <asp:RangeValidator ID="RangeValidator1" ControlToValidate="TextBox1"
    runat="server" ErrorMessage="Help" SetFocusOnError="True" Type="Double"></asp:RangeValidator>
    

    HTML Alt:

    您可以在这里使用组合。一个验证它是否在 64 位范围内,另一个验证它只是一个整数。看起来很笨重,但应该可以。

    <asp:RangeValidator ID="RangeValidator1" ControlToValidate="TextBox1"
        runat="server" ErrorMessage="Help" SetFocusOnError="True" Type="Double"></asp:RangeValidator>
        <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
          ControlToValidate="TextBox1" ErrorMessage="RegularExpressionValidator" 
          ValidationExpression="[1-9]\d*"></asp:RegularExpressionValidator>
    

    代码背后:

    protected void Page_Load(object sender, EventArgs e) {
          this.RangeValidator1.MaximumValue = Int64.MaxValue.ToString();
        }
    

    【讨论】:

    • 是的,我收到此消息:“RangeValidator1”的 MaximumValue 属性的值“9223372036854775807”无法转换为“整数”类型
    • 你能告诉我更多你的代码/html吗?我设置了一个带有文本框和范围验证器的快速示例项目,一切都按预期工作。
    • 感谢您的成熟。您的示例有效,因为 RangeValidator 的默认类型是“字符串”,因此您基本上可以将任何字符串分配给最大值。但问题是,如果您使用此验证器来验证数字,例如“93”将无法验证,因为它大于 Int64.MaxValue ("9223372036854775807") 字符串。
    • 将类型值更改为双精度值。这显然将允许 64 位浮点,但不确定您的要求。上面编辑过的代码。
    • 感谢您的解决方案,但有一个小问题。使用两个验证器,一个要求用户输入数字,另一个检查范围,如果用户输入非数字字符,则消息将显示在远离文本框的位置,因为为第一个验证器保留了一个空格。没有消息时,有没有办法缩小验证?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多