【问题标题】:asp:CustomValidator not returning 'false'asp:CustomValidator 不返回“假”
【发布时间】:2012-01-27 21:38:53
【问题描述】:

不知道这里出了什么问题。这是其他人开发的页面,我正在尝试解决其中一个问题。

场景:

ASP.NET 网站。

Login.aspx 有<asp:login> 并且有三个验证组。 Login.aspx.cs 是“user_login”的部分类。

每个验证组都有一个文本框和一个关联的自定义验证器。当在相应的文本框中输入内容时,所有三个自定义验证器都会被触发,但问题是只有第一个文本框(绑定到验证组 = 1)在验证失败时返回 false。

对于第 2 次和第 3 次,customvalidator 会被触发,但是当出现验证问题时,甚至在设置“args.IsValid = false;”之后,该过程会继续执行需要进一步执行的操作。

不知道这里出了什么问题。我希望 customvalidator 返回 false。最坏的情况是,当验证失败时,有什么方法可以将控件返回到“文本框”?

下面是使用的自定义验证器。

<asp:CustomValidator ID="ExistingIdValidator" runat="server" ControlToValidate="NewUserName" 
    ValidateEmptyText="true" ValidationGroup="NewUserForm" 
    OnServerValidate="NewUserNameCheck_ServerValidate">
</asp:CustomValidator> 


protected void NewUserNameCheck_ServerValidate(object source, ServerValidateEventArgs args)
{
    CustomValidator validator = source as CustomValidator;
    if (validator != null)
    {
        string NewuserNameValue = this.NewUserName.Text;
        Guid registeredUserId = (Guid)Membership.GetUser(NewuserNameValue).ProviderUserKey;
        if (registeredUserId != null)
        {
            validator.IsValid = false;
            this.FailureText_New.Text = "This UserID already exists. Please login as existing user";
            args.IsValid = false;
        }
    }
}

【问题讨论】:

  • 这里没有显示代码..仍在尝试
  • @jadarnel27:我看不出你是否修改了我的代码。如果它是我原始帖子中的自定义验证器代码,它仍然对我不起作用。
  • 你能显示javascript函数NewUserNameCheck_ServerValidate吗?
  • 没关系。我将 OnServerValidate 与 OnClientValidate 混淆了。
  • 关于 ASP.NET 服务器端验证的有趣之处在于它不会自动阻止单击事件的执行。就好像执行了验证过程,然后忽略了结果。因此,首先要放入按钮事件中的是if (!Page.IsValid) return;。这就是您阻止事件其余部分执行的方式,也是您强制用户更正表单上的任何错误的方式。

标签: asp.net login customvalidator validationgroup


【解决方案1】:

关于 ASP.NET 服务器端验证的有趣之处在于它不会自动阻止单击事件的执行。就好像执行了验证过程,然后忽略了结果。因此,首先要放入按钮事件中的是if (!Page.IsValid) return;。这就是您阻止事件其余部分执行的方式,也是您强制用户更正表单上的任何错误的方式。

【讨论】:

  • 谢谢约翰。这为我节省了很多时间。据推测,页面上的其他(非自定义)验证器也在 JavaScript 中进行了动态检查,这完全阻止了按钮回发到服务器,从而隐藏了这种行为。
猜你喜欢
  • 2011-09-06
  • 2012-12-21
  • 1970-01-01
  • 2011-01-30
  • 1970-01-01
  • 2013-05-29
  • 1970-01-01
  • 2015-12-01
  • 2021-03-31
相关资源
最近更新 更多