【问题标题】:Required Field Validators firing in Chrome & Safari when button has CausesValidation="false"当按钮具有 CausesValidation="false" 时,必需的字段验证器在 Chrome 和 Safari 中触发
【发布时间】:2010-10-08 06:28:00
【问题描述】:

我在 Chrome 和 Safari 中的 ASP.NET 4 应用程序遇到了一些问题(适用于 Firefox 和 IE)。

我有一个使用以下代码声明的按钮:

<asp:Button ID="btnEOI1" runat="server" CssClass="buttonCSS" Text="Lodge an Expression of Interest"
                        OnClick="btnEOI_Click" CausesValidation="False" />

在代码隐藏文件中,我有以下代码:

protected void btnEOI_Click(object sender, EventArgs e)
{
   Response.Redirect("Default.aspx", true);
}

页面上还有一个 LoginControl,它有两个RequiredFieldValidator 和一个RegularExpressionValidator:

<asp:requiredfieldvalidator id="UserNameRequired" runat="server" ControlToValidate="UserName" 
    ErrorMessage="Please enter your User Name." SetFocusOnError="true" Display="None">
</asp:requiredfieldvalidator>

<asp:RegularExpressionValidator runat="server" id="RegularExpressionValidator1"  
    ControlToValidate="UserName"
    ErrorMessage="Please enter your User Name without spaces." ValidationExpression="[\S]+" 
    Display="None" SetFocusOnError="true" >
</asp:RegularExpressionValidator>                                 

<asp:requiredfieldvalidator id="PasswordRequired" runat="server" ControlToValidate="Password" 
    ErrorMessage="Please enter your Password." SetFocusOnError="true" Display="None">
</asp:requiredfieldvalidator>

当我在 Chrome 和 Safari 中单击该按钮时,即使该按钮具有 CausesValidation="false",UserNameRequired 和 PasswordRequired 验证器也会触发。在 IE 或 Firefox 中不会出现验证错误。

如何阻止验证器在 Chrome 和 Firefox 中触发?

【问题讨论】:

  • 你有更新到最新的 asp.net ajax 库吗?
  • 我们目前使用随 .NET Framework 4.0 安装的标准库。

标签: asp.net google-chrome safari validation


【解决方案1】:

我刚刚在一个空白页面中测试了您的代码,它在所有浏览器中都能正常工作。

你可以尝试使用Validation Groups

只需为 UserNameRequired、RegularExpressionValidator1、PasswordRequired 和您的登录按钮设置相同的组。

【讨论】:

  • 抱歉耽搁了 - 将所有验证器放入验证组并没有解决问题。
【解决方案2】:

事实证明,我们使用了一些 javascript 来防止双击提交表单 [0](在本例中是登录控件)。

【讨论】:

  • 我在 RadioButtonList stackoverflow.com/questions/7248780/… 上遇到了同样的问题,一旦用户从列表中选择了一个值,但没有单击提交按钮,验证就会触发。你找到这个问题的根本原因了吗?
  • @suggy1982 - 在我的情况下,这是因为我们在某些 javascript 中对 form[0] 进行了提交。删除该代码后,我们在浏览器之间没有问题。我读了你的问题 - 这是一个奇怪的问题。我在一些地方使用了向导控件,发现有时很难使用。
【解决方案3】:

我不确定这是否与您的问题相关,但我发现 RequiredFieldValidatorsDisplay="Dynamic" 设置的问题。

删除它解决了我在Chrome 中无法正确显示某些验证器的问题。而在过去也有其他例子,添加有助于解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    相关资源
    最近更新 更多