2012-12-17 63 views
3

我有問題: 我在我的頁面上有一個驗證imieTextbox控件的自定義驗證器。但它不起作用。我不知道爲什麼。ASP.NET CustomValidator不能正常工作

這種方法來自register.aspx.cs文件:

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args) 
    { 
//of course here will be other validation logic but setting IsValid property ti false  is for example 
     args.IsValid = false; 
    } 

而這來自fromregister.aspx文件:

<asp:CustomValidator ID="CustomValidator1" runat="server" 
      ControlToValidate="imieTextbox" Display="Dynamic" 
      ErrorMessage="CustomValidator" 
      onservervalidate="CustomValidator1_ServerValidate" ValidateEmptyText="True" 
      ValidationGroup="A"></asp:CustomValidator> 

提交關於頁面按鈕具有屬性CausesValidation設置爲TRUE,具有驗證A組(與我網頁上的所有驗證器一樣)。 所有驗證器(requiredfield validators)都可以正常工作,但自定義驗證器不是。這是爲什麼?我究竟做錯了什麼?

回答

6

你必須調用

if (Page.IsValid) 
在服務器上回發

,否則你的服務器驗證將不會被調用。 RequiredFieldValidator在客戶端進行驗證,這就是爲什麼這個工作正常。但是,您應該始終在服務器上進行驗證。

對於客戶端驗證,您必須編寫一個JavaScript方法。你在你的CustomValidator設置屬性:

ClientValidationFunction="YourValidationMethod" 

和方法做這樣的事情

function YourValidationMethod(source, args) 
{ 
    if (valid) // do check here 
     args.IsValid = true; 
    else 
     args.IsValid = false; 
} 
+0

工作!謝謝!還有另一個問題?我怎樣才能做相同的驗證(使用相同的自定義驗證器),但在客戶端? –

+0

不幸的是,您不能使用與您必須在客戶端上編寫JavaScript來驗證的方法相同的方法。 – slfan

+0

非常感謝你!!!省時間 !! – Tchaps