Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Atteint de JavaScriptite Aiguë [Cyril Durand]

Expert ASP.net Ajax et WCF, Cyril Durand parle dans son blog de point techniques sur ASP.net, ASP.net Ajax, JavaScript, WCF et .net en général. Cyril est également consultant indépendant, n'hésitez pas à le contacter pour de l'assistance sur vos projets

Actualités

  • Blog de Cyril DURAND, passionné de JavaScript, Ajax, ASP.net et tout ce qui touche au developpement Web Client-Side.

    Consultant freelance, n'hésitez pas à me contacter pour vos projets .net : architecture, accompagnement, formation, ...

    View Cyril Durand's profile on LinkedIn
    hit counters


    Expertise Commerce server et BizTalk

Verifier une checkbox par un validator - CustomValidator

Qui n'a jamais eu à vérifier que l'utilisateur coche bien une checkbox avant de cliquer sur un bouton ? Vous savez, la CheckBox qui contient "En cochant cette case j'accepte les conditions".

Aussi étonnant que cela puisse paraitre, les contrôles de validations ASP.net ne peuvent pas vérifier cette condition, ni même le RequiredFielValidator. Il faut pour cela utiliser un CustomValidator qui se charge de valider à la fois côté client grâce à une fonction JavaScript ET côté serveur. Pour cela il faut tout d'abord renseigner la propriété ClientValidationFunction qui doit contenir le nom de la fonction JavaScript vérifiant la validité du formulaire puis s'abonner à l'événement ServerValidate qui permet de vérifier la validité côté serveur. Bien souvent la validation côté serveur est oubliée, sur nos machines JavaScript s'occupe de la validation. Ne pas valider côté serveur est une faille de sécurité; les personnes mal-intentionnés n'ont que faire de la validation JavaScript, c'est amusant mais cela ne protège absolument pas, le seul but de la propriété ClientValidationFunction est que l'application soit plus interactif.

<script type="text/javascript"> var validateAcceptCondition = function(source, args){ args.IsValid = $get('<%=cbAcceptCondition.ClientID%>').checked; } </script> <asp:CustomValidator ID="cvAcceptCondition" runat="server" ClientValidationFunction="validateAcceptCondition" Text="Vous devez accepter les conditions" ValidationGroup="Condition" /> <asp:CheckBox ID="cbAcceptCondition" runat="server" Text="En cochant cette case, j'accepte les conditions ci-dessus" ValidationGroup="Condition" />

Protected Sub cvAcceptCondition_ServerValidate(ByVal source As Object, _ ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) _ Handles cvAcceptCondition.ServerValidate args.IsValid = cbAcceptCondition.Checked End Sub

Enfin, lors du click sur le bouton il ne faut pas oublier de vérifier la validité du formulaire, là aussi c'est trop souvent oublié car la validation est faite côté client via JavaScript sur nos machines.  

Page.Validate("Condition") If Page.IsValid Then ' do something here End If

Si l'on n'appelle pas la méthode Page.Validate alors Page.IsValid se rapportera sur tous les groupes de validations du formulaire. En appellant cette méthode, Page.IsValid se rapportera seulement au groupe de validation demandé.

ASP.net fourni des contrôles de validation qui permet de s'assurer que l'utilisateur ne saisit pas des données stupides ou dangereuses, encore faut il ne pas oublier de vérifier la validité du formulaire ...


Pour rappel, les contrôles de validations ne sont pas officiellement supporté par ASP.net Ajax. Si vous les utilisez à l'intérieur d'un UpdatePanel je vous conseille de lire ce post : Validator et UpdatePanel

Posted: lundi 9 juillet 2007 19:20 par cyril
Classé sous : , ,
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

FREMYCOMPANY a dit :

Lol, je confirme, ne pas valider coté serveur est un tort très dommageable, quelques sites en ont déjà fait les frais Wink

Hein ? J'ai jamais dit que c'était ma faute [ange]

# juillet 9, 2007 19:40

Danuz a dit :

Tu es retourné au vb alors :p!

# juillet 9, 2007 22:43

tkfe a dit :

C'est une bonne piqure de rappel pour les concepteurs de pages ASP.NET ! Encore trop de sites n'ont pas de validation côté serveur...

Merci Cyril pour ce rappel

# juillet 10, 2007 10:03

VANNESTE Xavier a dit :

pour tester un site il est toujours interressant de désactiver le javascript du navigateur pour voir comment il reagit. dans IE c'est outil/option internet/Securité/Personnalisé le niveau. c'est souvent la qu'on se rend compte que les validateurs personnalisé passe la validation cliente et comme il y en a pas coté serveur ben ca plante.

# juillet 10, 2007 10:19

FREMYCOMPANY a dit :

Perso, j'aime bien utiliser Fiddler pour voir ce qui est envoyé au serveur et générer des réponses mal-formées (réponse invalide, réponse incomplète, nom de session truqué, ...) juste pour tester la réactivité du site.

# juillet 10, 2007 14:48

fougere a dit :

Salut,

Dans le cas où le checkbox est dans un CreateWizard, cette ligne :

args.IsValid = $get('&lt;%=cbAcceptCondition.ClientID%&gt;').checked;

ne fonctionne plus :(

En effet, il ne reconnait pas la checkbox étant donné qu'elle est dans le CreateWizard.

Une solution ?

Merci d'avance

# août 14, 2007 10:12
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [RIA Services] Include et DomainDataSource par Blog Technique d'Audrey PETIT le il y a 3 heures et 0 minutes

- ZUNE : Version ZUNE Software V 4.2 et la socialisation par Blog Technique de Romelard Fabrice le il y a 4 heures et 25 minutes

- Pratique de Silverlight par Eric Ambrosi par Blog de Frédéric Queudret le il y a 6 heures et 32 minutes

- Apprendre à développer pour les mobiles avec la nouvelle génération .NET par Perspective le il y a 7 heures et 48 minutes

- ZUNE : Nouvelle version du ZUNE Software – V 4.2 par Blog Technique de Romelard Fabrice le il y a 8 heures et 13 minutes

- Nouveau système d'aide pour Visual Studio 2010 : pour ceux qui n'apprécient pas trop l'absence d'index... par CoqBlog le 03-20-2010, 20:05

- L'interface naturelle de Windows Phone 7 Series par Perspective le 03-20-2010, 18:49

- Comment mapper une vue SQL sur une collection de complex type? par Matthieu MEZIL le 03-19-2010, 21:05

- SQL Server : Query Notification ou comment être notifié de modifications de données côté application (SqlDependency) par SQL Server vu par Christian Robert le 03-19-2010, 15:06

- [WF4] Un Binding Activity/ActivityDesigner qui passe mal? par Blog de Jérémy Jeanson le 03-19-2010, 13:42