【问题标题】:RequiredFieldValidator and regularexpressionvalidator don't workRequiredFieldValidator 和正则表达式验证器不起作用
【发布时间】:2015-05-29 11:35:58
【问题描述】:

我的“C#”aspx 页面之一中有以下代码。当我单击 cmdPassword 时,即使文本框为空,它也会触发事件。为什么两个验证都不能阻止它?

<tr>
  <td align="left" valign="top">Password:</td>
  <td align="left" valign="top">
    <asp:TextBox id="txtPassword" ValidationGroup="vgPassword" runat="server" Font-Size="Small" Width="200px" MaxLength=15 textmode="Password" />
            <br /><font class="pagetext_7">(between 6 and 15 characters long)</font>
            <br />
            <asp:literal id="litPassword" runat="server"></asp:literal>
    </td>
    <td valign="top" align="left">
      <asp:Button ID="cmdPassword" CausesValidation="true" runat="server" OnClick="cmdPassword_Click" validationgroup="vgPassword" style="color:#284E98;background-color:White;border-color:#507CD1;border-width:1px;border-style:Solid;font-family:Verdana;font-size:0.8em;" Text="Submit" height="20px" />
    </td>
    <td>
      <asp:RequiredFieldValidator ID="RequiredFieldValidator4" ControlToValidate="txtPassword" runat="server" ErrorMessage="*"  validationgroup="vgPassword" />
      <asp:regularexpressionvalidator id="valPassword" runat="server" validationgroup="vgPassword" errormessage="Password must be between 6 and 15 characters long" validationexpression="^.{6,15}$" controltovalidate="txtPassword"></asp:regularexpressionvalidator>
    </td>
   </tr>

更新:我刚刚将此代码添加到按钮单击事件中。

protected void cmdPassword_Click(object sender, EventArgs e)
{
  if (txtPassword.Text.Length == 0)
  {
    litPassword.Text = "<font color='red'>Password cannot be blank.</font>";
  }
  else
  {
    //Password update code
  }
}

有没有人发现这样做有什么问题?

【问题讨论】:

  • 您在 TextBox 中缺少验证组。
  • 嗨,Kami,感谢您的回复。我将验证组添加到文本框中,按钮单击事件仍然触发。
  • 删除 CausesValidation="true"
  • 我将您的 aspx 代码从上面复制到一个新项目中,它运行良好。
  • @Jerry Warra:您的代码工作正常,当文本框为空或密码太短时,它会触发客户端验证。可能还有其他一些问题可能会禁用您的客户端验证。这部分代码运行良好。

标签: c# html asp.net validation


【解决方案1】:

如果文本框为空,通常regularexpressionvalidator 不会触发。所以您的代码没有问题。如果您想要它也检查它,即使您的文本框为空,您也必须更改您的正则表达式。

【讨论】:

  • 同意,但为什么RequiredFieldValidator 不阻止点击事件触发?
  • 只需将此添加到您的按钮即可使用 CausesValidation="True" 而不是文本框
【解决方案2】:

这就是我最终做到的方式

protected void cmdPassword_Click(object sender, EventArgs e)
{
   if (txtPassword.Text.Length == 0)
   {
     litPassword.Text = "<font color='red'>Password cannot be blank.</font>";
   }
   else
   {
    //Password update code
   }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 2018-11-29
    • 2014-04-21
    • 1970-01-01
    • 2016-08-01
    • 2011-03-01
    • 1970-01-01
    相关资源
    最近更新 更多