2015-04-22 57 views
0

運行「cvLeapYear_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函數也被設置。

+1

你能說明驗證器本身是如何在標記中定義的嗎? – Andrei

+0

爲「clientValidation函數也設置」添加aspx代碼 – Anil

+0

@Andrei: Sushma

回答

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

添加javascript函數的名稱,如在上面的代碼

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>