Comment : valider à l'aide d'une fonction personnalisée pour les contrôles serveur ASP.NET

Mise à jour : novembre 2007

Si les contrôles de validation ASP.NET existants ne correspondent pas à vos besoins, vous pouvez définir une validation personnalisée côté serveur et l'appeler à l'aide du contrôle CustomValidator. Vous pouvez également ajouter la validation côté client pour vérifier l'entrée d'utilisateur avant que la page ne soit envoyée, en écrivant une fonction dans ECMAScript (JavaScript) qui reproduit la logique de la méthode côté serveur.

Vous devez exécuter la validation côté serveur même si vous utilisez un contrôle côté client. La validation côté serveur permet également d'empêcher les utilisateurs de contourner la validation en désactivant ou en modifiant le script client.

Note de sécurité :

Par défaut, les pages Web ASP.NET vérifient automatiquement que des utilisateurs malveillants n'essaient pas d'envoyer des éléments de script ou HTML à votre application. Pour plus d'informations, consultez Vue d'ensemble des attaques de script.

Pour valider sur le serveur à l'aide d'une fonction personnalisée

  1. Ajoutez un contrôle CustomValidator à la page et définissez les propriétés suivantes :

    Propriété

    Description

    ControlToValidate

    L'ID du contrôle que vous validez.

    ErrorMessage, Text, Display

    Propriétés spécifiant le texte et l'emplacement des erreurs qui s'afficheront si la validation échoue. Pour plus d'informations, consultez Comment : contrôler l'affichage des messages d'erreur de validation pour les contrôles serveur ASP.NET.

  2. Créez un gestionnaire d'événements serveur pour l'événement ServerValidate du contrôle. Cet événement est appelé pour effectuer la validation. La signature de la méthode se présente ainsi :

    Protected Sub CustomValidator1_ServerValidate(ByVal _
       source As System.Object, ByVal args As _
       System.Web.UI.WebControls.ServerValidateEventArgs) _
       Handles CustomValidator1.ServerValidate
    End Sub
    
    protected void ValidationFunctionName(object source, ServerValidateEventArgs args)
    {
    
    }
    

    Le paramètre source est une référence au contrôle de validation personnalisé qui déclenche cet événement. La propriété args.Value contiendra l'entrée d'utilisateur à valider. Définissez args.IsValid avec la valeur true si la valeur est valide, sinon avec la valeur false.

    L'exemple de code suivant montre comment créer une validation personnalisée. Le gestionnaire d'événements vérifie que l'entrée d'utilisateur comporte au moins huit caractères.

    Protected Sub TextValidate(ByVal source As System.Object, _
       ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) _
       Handles CustomValidator1.ServerValidate
        args.IsValid = (args.Value.Length >= 8)
    End Sub
    
    protected void TextValidate(object source, ServerValidateEventArgs args)
    {
        args.IsValid = (args.Value.Length >= 8);
    }
    
  3. Liez le gestionnaire d'événements à la méthode à l'aide, par exemple, du code suivant :

    <asp:textbox id="TextBox1" ></asp:textbox>
    <asp:CustomValidator id="CustomValidator1"  
     OnServerValidate="TextValidate" 
     ControlToValidate="TextBox1" 
     ErrorMessage="Text must be 8 or more characters.">
    </asp:CustomValidator>
    
    <asp:textbox id="TextBox1" ></asp:textbox>
    <asp:CustomValidator id="CustomValidator1"  
      OnServerValidate="TextValidate" 
      ControlToValidate="TextBox1" 
      ErrorMessage="Text must be 8 or more characters.">
    </asp:CustomValidator>
    
  4. Ajoutez un test dans votre code de page Web ASP.NET afin de vérifier la validité. Pour plus d'informations, consultez Comment : tester par programme la validité pour les contrôles serveur ASP.NET.

Pour créer une logique de validation personnalisée sur le client

  1. Créez une fonction de validation dans ECMAScript (JavaScript, JScript).

    L'exemple de code suivant illustre une validation personnalisée côté client. Un extrait de la page affiche un contrôle TextBox référencé par un contrôle CustomValidator. Le contrôle de validation appelle une fonction de script client appelée validateLength pour vérifier que l'utilisateur a entré au moins huit caractères dans le contrôle TextBox.

    <script type="text/javascript">
      function validateLength(oSrc, args){
       args.IsValid = (args.Value.length >= 8);
    }
    </script>
    
    <script type="text/javascript">
      function validateLength(oSrc, args){
       args.IsValid = (args.Value.length >= 8);
    }
    </script>
    
    <asp:Textbox id="text1"  text=""></asp:Textbox>
    <asp:CustomValidator id="CustomValidator2"  
     ControlToValidate = "text1"
     ErrorMessage = "You must enter at least 8 characters!"
     ClientValidationFunction="validateLength" >
    </asp:CustomValidator>
    
    <asp:Textbox id="text1"  text=""></asp:Textbox>
    <asp:CustomValidator id="CustomValidator2"  
      ControlToValidate = "text1"
      ErrorMessage = "You must enter at least 8 characters!"
      ClientValidationFunction="validateLength" >
    </asp:CustomValidator>
    
  2. Ajoutez un test dans votre code de page Web ASP.NET afin de vérifier la validité. Pour plus d'informations, consultez Comment : tester par programme la validité pour les contrôles serveur ASP.NET.

Voir aussi

Concepts

Types de validation pour les contrôles serveur ASP.NET

Autres ressources

Contrôles ASP.NET de validation