IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[ASP.NET MVC] Création des règles de validation


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Par défaut [ASP.NET MVC] Création des règles de validation
    Bonsoir!

    Je penche sur un système de validation des entrées utilisateurs. Est-ce que quelqu'un aurait une idée d'un système efficace de validation des entrées utilisateurs?

    Petite note qui a peut être sont importance: j'utilise comme wrapper de bdd Entity Framework.

    Merci d'avance et bonne soirée

    L.

  2. #2
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    Euh que veux-tu contrôlé exactement ? Du genre tu demande à l'utilisateur d'entré un nombre et tu veux contrôlé que c'est bien un nombre ou c'est plutôt un contrôle pour vérifié si la donnée saisie existe déjà en base ?

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Par défaut
    En faite, plusieurs cas de figure:

    - Contrôler que les valeurs ne sont déjà pas en base.
    - Contrôler que l'utilisateur a bien entré les valeurs obligatoires
    - Contrôler qu'il rentre bien les valeurs souhaitée (ex: une date dans un champ demandant la date, du texte dans un champ demandant du texte, etc)

    Je ne sais pas vraiment comment m'y prendre pour avoir une solution qui soit simple à étendre si par la suite je dois rajouter des contrôles.

  4. #4
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    Alors pour "Contrôler que l'utilisateur a bien entré les valeurs obligatoires"
    Il faut utiliser les ValidationGroup.

    Exemple : (L'ajax c'est pour que ca fasse jolie )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <asp:TextBox ID="TB_Part" runat="server" AutoPostBack="true" CssClass="TB_G" OnTextChanged="Part_Change"></asp:TextBox>
    <asp:RequiredFieldValidator ID="Val_CS" runat="server" ErrorMessage="Le champ est vide !" ControlToValidate="TB_Part" ValidationGroup="VG1" Display="None" />
    <ajax:ValidatorCalloutExtender ID="ValExt_CS" runat="server" TargetControlID="Val_CS" HighlightCssClass="CBError" WarningIconImageUrl="~/Icones/pencil.png" />
     
    <asp:ImageButton ID="BT_Vld" runat="server" ImageUrl="~/Icones/add.png" CssClass="BT_Centre" ValidationGroup="VG1" OnClick="AJOUT_CLICK" AlternateText="Ajouter"/>
    Ensuite pour "Contrôler qu'il rentre bien les valeurs souhaitée"

    Soit tu utilise les mask (toujours de l'ajax) ^^: <ajax:MaskedEditExtender ......

    Exemple pour une date de naissance :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <asp:TextBox ID="TB_Naiss" runat="server" CssClass="TB"></asp:TextBox>
                                                    <ajax:MaskedEditExtender ID="MaskedEditExtender6" runat="server" TargetControlID="TB_Naiss"
                                                        Mask="99/99/9999" MessageValidatorTip="true" OnInvalidCssClass="validatorCalloutHighlight"
                                                        MaskType="None" InputDirection="RightToLeft" AcceptNegative="None" DisplayMoney="None"
                                                        ErrorTooltipEnabled="True" CultureName="fr-FR" CultureThousandsPlaceholder="."
                                                        ClearMaskOnLostFocus="false" />
    Sinon tu peux le faire en même temps que quand tu fait : "Contrôler que les valeurs ne sont déjà pas en base"
    En utilisant les CustomValidator :

    Exemple :
    Code ascx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <asp:CustomValidator runat="server" ID="CVal_login"  
                                               ControlToValidate="TB_Login"
                                               Display="None"
                                               OnServerValidate="ServerValidationLogin" />
                                        <ajax:ValidatorCalloutExtender runat="Server" ID="CalloutLoginValidate"
                                                            TargetControlID="CVal_login"
                                                            HighlightCssClass="validatorCalloutHighlight" />
    Code Behind :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    protected void ServerValidationLogin(object sender, ServerValidateEventArgs e)
            {
                if(........)
     
                    e.IsValid = false;
     
                else
                    e.IsValid = true;
     
            }
    Voilà

    NB : Désolé pour la mise en page du code, sous VS c'est nettement mieux

  5. #5
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 397
    Par défaut
    Et ça marche bien avec ASP.NET MVC?

    Par contre, j'ai vu que tu utilise souvent de l'AJAX, et je suis un peu réticent à l'utilisation d'AJAX pour des contrôles côté client. Je ne sais pas trop comment les contrôles AJAX fonctionnent, mais si c'est le même principe que de faire sont code en javascript et que la validation se passent côté client, alors suis vraiment pas fan (surtout pour des raisons de sécurités) :p

  6. #6
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    Tu peux te passer de l'ajax, les controls ajax que j'ai je les utilise uniquement pour afficher les messages d'erreurs après c'est purement graphique tout le code que j'ai mis est fonctionnel sans les controls ajax.

    Si tu regarde ce ne sont que des extender donc pas forcement nécessaire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] validation de formulaire coté client en utilisant asp.net mvc 2
    Par Michou2000 dans le forum C#
    Réponses: 1
    Dernier message: 29/03/2012, 12h08
  2. Création d'un package avec VS2008 pour ASP.net MVC
    Par trihanhcie dans le forum ASP.NET MVC
    Réponses: 0
    Dernier message: 15/06/2011, 17h42
  3. Réponses: 18
    Dernier message: 11/03/2010, 11h27
  4. [ASP.NET MVC] Inherits des Views
    Par Leelith dans le forum ASP.NET
    Réponses: 3
    Dernier message: 06/10/2009, 02h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo