.net2 - utilisation des validationgroup

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

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.