Partager via


Comment : tester par programme la validité pour les contrôles serveur ASP.NET

Mise à jour : novembre 2007

Les contrôles de validation testent les entrées d'utilisateur, définissent un état d'erreur et génèrent des messages d'erreur. Ils ne modifient pas l'enchaînement du traitement de la page — par exemple, ils ne contournent pas votre code s'ils détectent une erreur d'entrée d'utilisateur. En revanche, vous testez l'état des contrôles dans votre code avant d'utiliser la logique spécifique à une application. Si vous détectez une erreur, vous empêchez l'exécution de votre propre code ; la page poursuit son traitement et est retournée à l'utilisateur avec des messages d'erreur.

Note de sécurité :

Par défaut, les pages Web ASP.NET valident 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.

Vous pouvez tester un état général à l'échelle de la page, ainsi que l'état de contrôles individuels. En général, vous le faites dans le gestionnaire d'événements que vous avez créé pour la page.

Pour tester un état d'erreur général

  • Dans votre code, testez la propriété IsValid de la page. Cette propriété reporte les valeurs des propriétés IsValid de tous les contrôles de validation de la page (à l'aide d'un ET logique) ; si l'un des contrôles de validation a la valeur invalid, la propriété de la page retournera la valeur false.

    Remarque :

    Les informations de validation ne sont pas disponibles pendant l'initialisation ou pendant l'étape de chargement de la page. Cependant, vous pouvez appeler manuellement la méthode Validate pendant Page_Load, puis tester la propriété IsValid de la page. Pour plus d'informations sur les états de page, consultez Vue d'ensemble du cycle de vie des pages ASP.NET.

    L'exemple suivant illustre le gestionnaire d'événements d'un bouton. Le code teste la propriété IsValid de la page. Notez qu'aucune clause Else n'est nécessaire, car la page sera automatiquement retournée au navigateur et les contrôles de navigation afficheront leurs propres messages d'erreur.

    Public Sub Button1_Click(ByVal sender As Object, _
    ByVal e As System.EventArgs) _
    Handles Button1.Click
    
        If Me.IsValid Then
            ' Perform database updates or other logic here
        End If
    End Sub
    
    void Button1_Click(object sender, System.EventArgs e)
    {
        if (IsValid)
        {
            // Perform database updates or other logic here.
        }
    }
    

Pour tester l'état d'erreur de contrôles individuels

  • Parcourez la collection Validators de la page contenant les références à tous les contrôles de validation. Vous pouvez examiner la propriété IsValid de chacun des contrôles de validation.

    Remarque :

    Si vous souhaitez exécuter ce contrôle pendant Page_Load, vous devez d'abord appeler manuellement la méthode Validate.

    L'exemple suivant montre comment obtenir l'état des contrôles de validation.

    If (Me.IsPostBack) Then
        Me.Validate()
        If (Not Me.IsValid) Then
            Dim msg As String
            ' Loop through all validation controls to see which 
            ' generated the error(s).
            Dim oValidator As IValidator
            For Each oValidator In Validators
                If oValidator.IsValid = False Then
                    msg = msg & "<br />" & oValidator.ErrorMessage
                End If
            Next
            Label1.Text = msg
        End If
    End If
    
    if (this.IsPostBack)
    {
        this.Validate();
        if (!this.IsValid)
        {
            string msg = "";
            // Loop through all validation controls to see which
            // generated the errors.
            foreach (IValidator aValidator in this.Validators)
            {
                if (!aValidator.IsValid)
                {
                    msg += "<br />" + aValidator.ErrorMessage;
                }
            }
            Label1.Text = msg;
        }
    }
    

Voir aussi

Tâches

Comment : contrôler l'affichage des messages d'erreur de validation pour les contrôles serveur ASP.NET

Comment : valider par programme les contrôles serveur ASP.NET

Référence

Validation des entrées d'utilisateur dans des pages Web ASP.NET