自定义验证不会触发

时间:2014-12-04 16:26:26

标签: c# asp.net webforms

以下是我的代码行:

对于TextboxCustomValidator

<asp:TextBox ID="Edit_Tbox_Email" runat="server" placeholder="Email Address..." CausesValidation="true" ValidationGroup="submission"></asp:TextBox>
<asp:CustomValidator runat="server" ControlToValidate="Edit_Tbox_Email" ID="cv_Email" OnServerValidate="cv_Email_ServerValidate" ErrorMessage="!" data-toggle="tooltip" title="Invalid Input!" ValidationGroup="submission"></asp:CustomValidator>

这是Button允许用户更改他/她的电子邮件:

<asp:Button ID="Edit_But_Email" runat="server" Text="Change" CssClass="btn btn-small" OnClick="Edit_But_Email_Click" ValidationGroup="submission" CausesValidation="true"/>

在服务器端:

protected void Edit_But_Email_Click(object sender, EventArgs e)
    {
        if(Page.IsValid)
            Edit_Lab_Email.Text = Edit_Tbox_Email.Text;
    }

protected void cv_Email_ServerValidate(object source, ServerValidateEventArgs args)
    {
        string emailRegex = "^\\w+[\\w-\\.]*\\@\\w+((-\\w+)|(\\w*))\\.[a-z]{2,3}$";
        if (Edit_Tbox_Email.Text.Length == 0 || Regex.IsMatch(Edit_Tbox_Email.Text, emailRegex))
        {
            cv_Email.IsValid = false;
        }
    }

但问题是cv_Email_ServerValidate()甚至没有发射。基本上,它没有验证Textbox。另外,我不想使用RequiredFieldValidatorRegularExpressionValidator。我想将它们的功能组合成一个验证器。并且尽可能地我只想使用(c#)背后的代码而不是jQuery。谢谢!

1 个答案:

答案 0 :(得分:1)

您的按钮有ValidationGroup,但您的CustomValidator没有。{1}}。如果您希望按钮对其进行保护,则必须设置相同的ValidationGroup

<强> 编辑: 您必须设置ValidateEmptyText="true"否则,它将不会验证空值。