3

問題があります:imieTextboxコントロールを検証するカスタムバリデーターがページにあります。しかし、それは機能していません。そして、その理由はわかりません。

このメソッドは、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;
    }

そしてこれはregister.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があります(私のページのすべてのバリデーターと同様)。すべてのバリデーター(必須フィールドバリデーター)は正常に機能しますが、カスタムバリデーターは機能しません。何故ですか?私は何が間違っているのですか?

4

1 に答える 1

7

あなたは電話する必要があります

if (Page.IsValid) 

サーバーのポストバック時に、そうでない場合、サーバー検証は呼び出されません。RequiredFieldValidatorはクライアントで検証するため、これが機能しています。ただし、常にサーバーでも検証する必要があります。

クライアント側の検証では、同じことを行うJavaScriptメソッドを作成する必要があります。CustomValidatorで属性を設定します。

ClientValidationFunction="YourValidationMethod"

メソッドはこのようなことをします

function YourValidationMethod(source, args)
{
   if (valid) // do check here
      args.IsValid = true;
   else
      args.IsValid = false;
}
于 2012-12-17T21:30:58.463 に答える