.net2 - utilisation des validationgroup

Soyez le premier à donner votre avis sur cette source.

Vue 29 501 fois - Téléchargée 1 077 fois

Description

En ASP.net1 nous avons déjà les controles de validation, cependant ils n'étaient pas toujours pratique, si nous avions 2 parties de formulaires à valider, il fallait que tous les controles de validation soient valide pour pouvoir envoyer la page.

Par exemple, si on avait sur la meme page, un UserControl de login et un UserControl de page Contact, il fallait que tous les champs soient remplis.

ASP.net 2 arrive avec une nouveauté : les validationGroup. Vous pouvez maintenant définir des régions à valider.

Pour plus de détail, regarder l'exemple.

Autre nouveauté, asp.net 2 permet de faire simplement des formulaires qui sont en respect avec les normes du W3C. En effet, le formulaire généré sera :

<fieldset>
<legend>Identifiez vous</legend>

<label for="Login1_TextBoxName" id="Login1_LabelName">Nom :</label>
<input name="Login1$TextBoxName" type="text" id="Login1_TextBoxName" />
<span id="Login1_RequiredFieldValidatorName" style="color:Red;display:none;">*</span><br />

<label for="Login1_TextBoxPassword" id="Login1_LabelPassword">Password :</label>
<input name="Login1$TextBoxPassword" type="password" id="Login1_TextBoxPassword" />
<span id="Login1_RequiredFieldValidatorPassword" style="color:Red;display:none;">*</span>

</fieldset>

Source / Exemple :


'Login.ascx :
'---------------------------------------------------------------------------------------

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="Login.ascx.vb" Inherits="UC_Login" %>
<asp:Panel ID="PanelLogin" runat="server" GroupingText="Identifiez vous" DefaultButton="ButtonLoginValid" CssClass="Login">
    <asp:Label ID="LabelName" runat="server" Text="Nom :" AssociatedControlID="TextBoxName"></asp:Label>
    <asp:TextBox ID="TextBoxName" runat="server" ValidationGroup="Login"></asp:TextBox>
    <asp:RequiredFieldValidator ID="RequiredFieldValidatorName" runat="server" ErrorMessage="*" ControlToValidate="TextBoxName" Display="Dynamic" SetFocusOnError="True" ValidationGroup="Login"></asp:RequiredFieldValidator><br />
    <asp:Label ID="LabelPassword" runat="server" Text="Password :" AssociatedControlID="TextBoxPassword"></asp:Label>
    <asp:TextBox ID="TextBoxPassword" runat="server" EnableViewState="False" TextMode="Password" ValidationGroup="Login"></asp:TextBox>
    <asp:RequiredFieldValidator ID="RequiredFieldValidatorPassword" runat="server" ErrorMessage="*" ControlToValidate="TextBoxPassword" Display="Dynamic" SetFocusOnError="True" ValidationGroup="Login"></asp:RequiredFieldValidator><br />
    <asp:Button ID="ButtonLoginValid" CssClass="Button" runat="server" Text="Valider" ValidationGroup="Login" /></asp:Panel>
<asp:Literal ID="LiteralResult" runat="server" EnableViewState="False"></asp:Literal>

'Login.ascx.vb 
'---------------------------------------------------------------------------------------

Partial Class UC_Login
    Inherits System.Web.UI.UserControl

    Protected Sub ButtonLoginValid_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButtonLoginValid.Click
        Page.Validate("Login")
        If Page.IsValid Then
            'Faudra bien sur vérifier tout ca dans une bdd etc ...
            If TextBoxName.Text = "Cyril" AndAlso TextBoxPassword.Text = "toto" Then
                Me.PanelLogin.Visible = False
                Me.LiteralResult.Text = "Authentification réussie"
            Else
                Me.LiteralResult.Text = "Nom d'utilisateur ou mot de passe incorrect"
            End If
        End If
    End Sub
End Class

'le fichier CSS 
'---------------------------------------------------------------------------------------
div.Login fieldset {width:290px;margin:auto;position:relative;}
div.Login fieldset label {text-align:right;width:70px;clear:left;display:block; float:left;margin:5px;}
div.Login fieldset input {width:170px;margin:5px;}
div.Login fieldset input.Button {margin-right:25px;float:right;width:70px;}

Conclusion :


J'ai mis dans le zip 2 userControl : un control pour le login et un controle pour la page de contact, il y a aussi la page TestValidationGroup qui contient les 2 UC.

Ce qu'il y a d'interessant, c'est que si vous validez la partie login, il ne regardera pas si la partie contact est valide.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

jesusonline
Messages postés
6827
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
17 -
Les contrôles de validation de ASP.net sont actif à la fois coté client et côté serveur.
J'ai écrit plus en détail sur le sujet ici : http://blogs.developpeur.org/cyril/archive/2008/09/02/asp-net-tout-savoir-sur-la-validation-des-entr-es-utilisateurs-les-controles-de-validation.aspx
rad_hass
Messages postés
7
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
30 septembre 2008
-
Bonjour,
Est ce que c'est possible de faire la même chose, mais côté JavaScript ? (avec ValidatorEnable par exemple ?)
Merci
jesusonline
Messages postés
6827
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
17 -
La question est vague et il n'y a pas vraiment de rapport avec la source, pose plutot la question sur le forum et si je trouve le temps (trés trés peu en ce moment) je te donnerais mon point de vu la dessus :-)
djigbo
Messages postés
1
Date d'inscription
lundi 11 septembre 2006
Statut
Membre
Dernière intervention
28 septembre 2006
-
Pour ce code les controles de sécurités pour faire echec aux "hackers" qui pourraient tenter des attacks sql injection ne sont pas mis en evidence.

J'aimerais en savoir plus à ce sujet. Comment verrouer son site internet contre les moissonneurs d'adresses mail... et autres virtuels vandals?

Merci
Djigbo
astuces_jeux
Messages postés
731
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
27 mai 2010
-
plus précisement il met "Il y a eu une erreur lors de l'envoi du mail, veuillez réessayer plus tard. "
merci de m'aider stp

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.