2009-09-18 174 views
0

我有以下代碼。當我按下我的保存按鈕時,三個requiredfieldvalidators運行良好並正常工作。但是我的自定義驗證器不起作用。它根本不會觸發該事件。我有標準的文本框和驗證摘要控件。有沒有任何理由可能無法正常工作?自定義驗證器不會觸發

<asp:RequiredFieldValidator runat="server" ControlToValidate="txtForename" Display="None" ErrorMessage="Must enter a valid first name." /> 
<asp:RequiredFieldValidator runat="server" ControlToValidate="txtSurname" Display="None" ErrorMessage="Must enter a valid last name." /> 
<asp:RequiredFieldValidator runat="server" ControlToValidate="txtEmail" Display="None" ErrorMessage="Must enter a valid e-mail address." /> 

<asp:CustomValidator runat="server" OnServerValidate="CheckAtLeastOnePhoneNumber" 
     ErrorMessage="Must enter at least one phone number." Display="None" 
     ValidateEmptyText="True" /> 

<script runat="server"> 
    void CheckAtLeastOnePhoneNumber(Object s, ServerValidateEventArgs e) 
    { 
     if (txtMobileNumber.Text.Equals("") && 
      txtWorkNumber.Text.Equals("") && 
      txtHomeNumber.Text.Equals("")) 
     { 
      e.IsValid = false; 
     } 
    } 
</script> 

回答

1

我修好了。

自定義驗證器控件是一個服務器端檢查,所以其他驗證器(客戶端)首先執行。這有點誤導性,因爲驗證摘要控件通常會顯示所有驗證器錯誤。

假設名稱,電子郵件等是有效的,只有這樣它纔會提交給服務器,並提出驗證錯誤。

+1

您可以使用自定義驗證器來檢查客戶端,以便它適合您的客戶端檢查。 – Kelsey 2009-10-27 16:52:55

1

沒錯。這是它的工作方式。如果您希望自定義驗證程序也可以在瀏覽器中工作,則需要在JavaScript中實現自定義驗證,並在控件的ClientValidationFunction屬性中定義該方法。然後它會在驗證摘要中顯示客戶端錯誤。

相關問題