自定义比较验证器

时间:2015-01-26 20:04:46

标签: c# asp.net validation

我有一份学校作业,其中两个文本框必须相同,与使用比较验证器完全相同,但我们 使用自定义验证器。

到目前为止我使用的代码是:

protected void CustomValidator1_ServerValidate1(object source, ServerValidateEventArgs args)
{
    if (TextBox2.Text == TextBox3.Text)
    {
        args.IsValid = true;
    }
    else 
    {
        args.IsValid = false;
    }

}

并在ASP.NET中

<asp:CustomValidator ID="CustomValidator1" runat="server" 
ErrorMessage="The second and third haven't got the same input."
onservervalidate="CustomValidator1_ServerValidate1" 
ValidateEmptyText="True" ValidationGroup="Custom"></asp:CustomValidator>

但是当我调试webform时,当我填写两个不同的输入时,没有任何显示。

2 个答案:

答案 0 :(得分:2)

在您尝试将表单提交到服务器之前,不会验证控件;一旦编辑,它们就不会被验证。

您可以将AutoPostback指定为true,以便在每次编辑文本框时将表单提交给服务器,但这可能会导致其自身的一组问题。

要在客户端上完全验证表单,而不发布到服务器,您需要自己编写JavaScript代码,而不是自定义验证器。

答案 1 :(得分:1)

要使用CustomValidator启用客户端(在回发之前)验证,您必须将ClientValidationFunction设置为某些JavaScript。

类似的东西:

<asp:CustomValidator ID="CustomValidator1" runat="server" 
ErrorMessage="The second and third haven't got the same input."
onservervalidate="CustomValidator1_ServerValidate1" 
ClientValidationFunction="CustomValidator1_ClientValidate1"
ValidateEmptyText="True" ValidationGroup="Custom"></asp:CustomValidator>

<script type="text/javascript">
    function CustomValidator1_ClientValidate1(source, arguments) {
       if (/* validation code */) {
         arguments.IsValid = true;
       } else {
         arguments.IsValid = false;
       }
    }
</script>