2009-11-20 1 views
0

J'ai créé un contrôle personnalisé et un validateur personnalisé (extension BaseValidator). Sur le contrôle personnalisé, j'ai défini ValidationProperty ("Valeurs"). Le problème est que la validation ne fonctionne pas lorsque la publication est envoyée à moins que j'exécute Page.Validate(). Et quand j'appelle Page.Validate() tous les validateurs sont exécutés ce qui n'est pas ce que je m'attendrais à la publication.Création d'ASP.NET personnalisée validateur

La question est de savoir comment puis-je créer wich validateur personnalisé sera exécuté lorsque la valeur de contrôle des changements et valide juste que le contrôle?

Répondre

1

Ce n'est pas comment fonctionnent les validateurs. À moins que vous n'utilisiez un paramètre ValidationGroup, tous les validateurs de votre page se déclenchent automatiquement. Vous n'avez pas besoin d'appeler explicitement Page.Validate(). Vous avez besoin d'envelopper votre code dans un contrôle comme celui-ci, cependant:

if(Page.IsValid) 
{ 
    //do something here 
} 

Contrairement validateurs côté client, la validation côté serveur n'empêche pas la page de poster en arrière et des événements de traitement comme d'habitude.

Pour créer un contrôle qui ne valide que lorsque les changements de valeur de contrôle, il faudrait un peu de sueur, puisque l'événement se déclenche de changement après les validateurs ont été exécutés.

+0

Oui, c'est vraiment triste. J'ai juste repéré que si je crée deux champs avec deux validateurs et l'un des champs aura la propriété AutoPostBack définie sur true, alors quand après le côté client valide le premier champ et affiche le message d'erreur j'entre le texte dans le deuxième champ tous les messages d'erreur disparaissent :( –

0

Avez-vous essayé d'utiliser des groupes de validation?