自定义验证程序未定义方法错误

时间:2015-04-22 10:31:17

标签: c# asp.net

我在运行时遇到错误&chuLeapYear_ServerValidate'未定义

验证器定义为

<asp:CustomValidator ID="CustomValidator1" runat="server"
                 ClientValidationFunction="cvLeapYear_ServerValidate"
                 ControlToValidate="txtLeapYear" ErrorMessage="Not a leap year">
</asp:CustomValidator>

功能

protected void cvLeapYear_ServerValidate(object source,ServerValidateEventArgs args)
{
    int year;
    try
    {
        year = Convert.ToInt32 (args.Value);
        if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
        {
            args.IsValid = true;
        }
        else
        {
            args.IsValid = false;
        }
    }
    catch(Exception e)
    {
        args.IsValid = false;
    }
}

在后端代码中定义,后面的javascript代码在aspx webform中定义

<script type="text/javascript">
    function isLeapYear(sender,args)
    {
        year = parseInt(args.Value);
        if((year % 4 == 0 && year % 100 != 0)||(year % 400 == 0))
        {
            args.IsValid = true;
        }
        else
        {
            args.IsValid = false;
        }
    }
</script>

和clientValidation函数也已设置。

2 个答案:

答案 0 :(得分:3)

<asp:CustomValidator ID="CustomValidator1" runat="server" ClientValidationFunction="isLeapYear" ControlToValidate="txtLeapYear" ErrorMessage="Not a leap year" OnServerValidate="cvLeapYear_ServerValidate" ></asp:CustomValidator>

添加javascript函数的名称,如上面的代码

中所示

答案 1 :(得分:0)

ClientValidationFunction应该具有javascript函数的值,该函数被调用以从客户端进行验证。 您必须致电isLeapYear函数。

<asp:CustomValidator ID="CustomValidator1" runat="server"
             ClientValidationFunction="isLeapYear"
             ControlToValidate="txtLeapYear" ErrorMessage="Not a leap year">
</asp:CustomValidator>

您的函数cvLeapYear_ServerValidate是服务器端函数,您可以使用OnServerValidate属性调用该函数。

 <asp:CustomValidator ID="CustomValidator1" runat="server"
             OnServerValidate ="cvLeapYear_ServerValidate"
             ControlToValidate="txtLeapYear" ErrorMessage="Not a leap year">
</asp:CustomValidator>