Partager via


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

Mise à jour : novembre 2007

Par défaut, les contrôles de validation ASP.NET effectuent automatiquement la validation lorsque la page est publiée en retour sur le serveur, après l'initialisation de la page (c'est-à-dire une fois que l'état d'affichage et les données de publication ont été traités) et avant l'appel à votre code de gestion d'événements. Les contrôles peuvent aussi exécuter la validation dans le navigateur si le navigateur prend en charge le script client.

Toutefois, il vous arrivera parfois de vouloir effectuer vous-même la validation par programme, Vous pouvez effectuer la validation par programme dans les circonstances suivantes :

  • Lorsque les valeurs de validation ne sont pas encore attribuées au moment de l'exécution. Par exemple, si vous utilisez un contrôle RangeValidator, vous définirez peut-être ses propriétés MinimumValue et MaximumValue au moment de l'exécution en fonction des valeurs entrées par l'utilisateur. Dans ce cas, la validation par défaut ne fonctionne pas. En effet, lorsque la page appelle les contrôles de validation, le contrôle RangeValidator ne contient pas suffisamment d'informations.

  • Lorsque vous souhaitez vérifier la validité d'un contrôle (ou de toute une page) dans le gestionnaire de l'événement Page_Load. À ce stade du traitement de la page, les contrôles de validation n'ont pas encore été appelés. La propriété IsValid de la page ou des contrôles individuels n'est donc pas définie. (Une exception est levée si vous essayez d'obtenir la valeur de cette propriété.) Toutefois, si vous souhaitez vérifier la validité d'un contrôle, vous pouvez appeler la validation par programme.

  • Lorsque vous ajoutez des contrôles (contrôles d'entrée ou contrôles de validation) au moment de l'exécution.

Plus généralement, si vous souhaitez décider du moment de la validation, vous pouvez valider par programme.

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. Si vous avez désactivé cette fonctionnalité, vous pouvez appeler la méthode ValidateInput. Pour plus d'informations, consultez Vue d'ensemble des attaques de script.

Pour effectuer une validation par programme

  • Appelez la méthode Validate du contrôle de validation.

    Le contrôle exécutera son contrôle et définira la propriété IsValid du contrôle et de la page. Si une erreur a été détectée, lorsque la page sera retournée à l'utilisateur, les messages d'erreur s'afficheront normalement.

    L'exemple de code suivant montre comment définir des propriétés par programme. Dans le cas présent, une page Web ASP.NET effectue des réservations dans une station qui propose une visite guidée pendant chaque séjour. L'utilisateur doit entrer une date d'arrivée et une date de départ, puis programmer la visite guidée pendant le séjour. Un contrôle RangeValidator est utilisé pour garantir que la date entrée par l'utilisateur possède un format correct, et que la date de la visite se situe bien entre les dates d'arrivée et de départ.

    Remarque :

    Lorsqu'un utilisateur entre une valeur ne pouvant pas être convertie en date, le contrôle du validateur lève une exception. Pour des raisons de clarté, la gestion des erreurs n'est pas présentée dans cet exemple.

    La date d'arrivée et la date de départ sont fournis par deux contrôles serveur Web TextBox de la page, txtArrival et txtDeparture. La date de visite est entrée dans un troisième contrôle TextBox, txtTourDate, qui est validé par le contrôle RangeValidator.

    Remarque :

    Lorsque vous validez par programme, désactivez le script client afin que le contrôle n'affiche pas le mauvais message d'erreur avant l'exécution de votre code de validation côté serveur. Pour plus d'informations, consultez Comment : désactiver la validation pour les contrôles serveur ASP.NET.

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
     System.EventArgs) Handles Button1.Click
        RangeValidator1.MinimumValue = txtArrival.Text
        RangeValidator1.MaximumValue = txtDeparture.Text
        RangeValidator1.Type = ValidationDataType.Date
        RangeValidator1.Validate()
    
        If Not RangeValidator1.IsValid Then
            RangeValidator1.ErrorMessage = "The tour date must " & _
            "fall between the arrival and departure dates."
        End If
    End Sub
    
    private void Button1_Click(object sender, System.EventArgs e)
    {
        RangeValidator1.MinimumValue = txtArrival.Text;
        RangeValidator1.MaximumValue = txtDeparture.Text;
        RangeValidator1.Type = ValidationDataType.Date;
        RangeValidator1.Validate();
    
        if (!RangeValidator1.IsValid)
        {
            RangeValidator1.ErrorMessage = "The tour date must " +
            "fall between the arrival and departure dates.";
        }
    }
    

Voir aussi

Concepts

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

Autres ressources

Contrôles ASP.NET de validation