【问题标题】:Why my RegularExpressionValidator allows do not enter any text?为什么我的 RegularExpressionValidator 允许不输入任何文本?
【发布时间】:2010-01-20 15:03:26
【问题描述】:

为什么这段代码允许用户不输入任何文本? AFAIK + 表示 One or more

<asp:TextBox ID="myTextBox" runat="server" MaxLength="9" />
<asp:RegularExpressionValidator runat="server"
   ControlToValidate="myTextBox"
   ValidationExpression="\d+"
   ErrorMessage="Error!" />

我希望用户只能输入 9 位数字。并且该字段是必需的。我该怎么做?

【问题讨论】:

    标签: asp.net regex


    【解决方案1】:

    来自MSDN

    注意:验证成功,如果 输入控件为空。如果一个值为 关联输入所需 控制,使用RequiredFieldValidator 除了控制 正则表达式验证器控件。

    【讨论】:

      【解决方案2】:

      正则表达式验证器仅在默认输入文本时起作用。我建议放置一个单独的RequiredFieldValidator,这样您就可以获得更有用的错误消息。

      现在您的 ValidationExpression 应该是 \d{9}

      【讨论】:

      • 为什么不推荐使用该属性?它叫什么名字?
      • 哎呀我的错。我误解了。我会编辑我的回复。如果它存在,我仍然不会推荐它,因为错误消息不太有用。当错误非常明确和具体时,我的经验中的错误会更好地发挥作用。
      【解决方案3】:

      大多数 asp.net 验证器在没有文本时不会触发。这基本上引入了对额外RequiredFieldValidator 的需求,您应该添加:

      <asp:RequiredFieldValidator id="RequiredFieldValidator1"
                      ControlToValidate="myTextBox"
                      Display="Static"
                      ErrorMessage="Required field"
                      runat="server"/> 
      

      【讨论】:

        【解决方案4】:

        您能否从页面中发布其余代码,这看起来不错,但问题可能出在您使用的表单中,您的表单声明中有 runat="server" 吗?

        尝试添加这个:

        <asp:RequiredFieldValidator ID="rfv" Display="None" runat="server" ControlToValidate="myTextBox" ErrorMessage="name is required!"></asp:RequiredFieldValidator>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-11-18
          • 1970-01-01
          • 1970-01-01
          • 2014-06-18
          • 1970-01-01
          • 2017-04-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多