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 :

[2.0] CustomValidator, coté serveur uniquement, ne fonctionne pas


Sujet :

ASP.NET

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut [2.0] CustomValidator, coté serveur uniquement, ne fonctionne pas
    Bonjour,

    J'utilise pour la première fois un CustomValidator. Je n'ai pas besoin de validation côté client, car cette validation dépend d'une réponse du serveur (via un web-service). Je précise aussi que je passe par un Wizard.

    En gros, je propose une liste d'identifiants possibles (en step 1), générés en fonction de données renseignées préalablement (en step 0). En plus de ces propositions, j'ai un choix "autre" permettant de saisir un identifiant.

    Mon CustomValidator me sert à vérifier que l'identifiant saisi dans ce dernier champ n'existe pas déjà. S'il existe, il doit rester sur ma page, permettant à l'utilisateur d'en saisir une autre. S'il n'existe pas, l'utilisateur passe la step 2 pour terminer la création du compte.

    Là où ça coince, c'est que mes quelques validations côté client fonctionnent bien lors du clic sur "Suivant". Mais quand il est censé valider mon identifiant personnalisé, il ne me bloque pas et passe à la step 2.

    Avez-vous une idée d'où cela peut venir ?

    Code de ma page aspx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <asp:ValidationSummary ID="ValidationSummary2" runat="server" />
    <asp:RadioButtonList ID="RadioButtonList1" runat="server" RepeatLayout="Flow" OnSelectedIndexChanged="RadioButtonList1_SelectedIndexChanged" AutoPostBack="True">
    </asp:RadioButtonList>
    <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="RadioButtonList1" ErrorMessage="Veuillez choisir une des propositions, ou saisir une autre adresse">*</asp:RequiredFieldValidator>
    <asp:TextBox ID="tbEmail" runat="server"></asp:TextBox><asp:Label ID="lblTbMail" runat="server" Text="Label"></asp:Label>
    <asp:RegularExpressionValidator ID="RegularExpressionValidatorTbEmail" runat="server" ControlToValidate="tbEmail" ErrorMessage="RegularExpressionValidator" ValidationExpression="\w+([-.]\w+)*" EnableClientScript="False">*</asp:RegularExpressionValidator>
    <asp:RequiredFieldValidator ID="RequiredTbMail" runat="server" ControlToValidate="tbEmail" ErrorMessage="RequiredFieldValidator">*</asp:RequiredFieldValidator>
    <asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="tbEmail" EnableClientScript="False" ErrorMessage="L'adresse choisie existe déjà, Veuillez en saisir une autre." OnServerValidate="CustomValidator1_ServerValidate">*</asp:CustomValidator>
    Codebehind
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
        {
            args.IsValid = false;
        }
    A ce stade, je ne fais pas encore intervenir mon WS... car même ça, ça ne fonctionne pas.

    Merci d'avance pour votre aide !
    Tom

  2. #2
    mow
    mow est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 210
    Points : 166
    Points
    166
    Par défaut
    Bonjour,

    Je ne sais pas si cela répondra à ta problématique mais ajoute à tous tes validateurs du controle TBEMAIL la propriété VALIDATIONGROUP. Bien sûr tu indiques le même... Ainsi tu seras sûr qu'ils seront tous exécutés

    Tiens moi au courant, j'ai déjà rencontré ce genre de souci
    Mais là ca a dû mal à me revenir.

    A plus tard,
    Mow

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci Mow pour ta réponse.
    J'ai déjà essayé l'ajout d'un ValidationGroup, sans succès.

    Dans mon cas, je n'ai pas de paramètre CausesValidation pour le bouton "Suivant" comme je pourrai avoir sur un bouton classique. Ca ne devrait pas être nécessaire étant donné le bon fonctionnement de la validation côté client.

    Tom

  4. #4
    mow
    mow est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 210
    Points : 166
    Points
    166
    Par défaut
    Autre conseil, supprime tous les validateurs concernant le controle TBEMAIL sauf le CUSTOMVALIDATOR et regarde ce qui se passe...

    De mon coté, je vais mettre ton bout de code dans l'une de mes pages et observées ce qui se passe...

    A tout'
    Mow

  5. #5
    mow
    mow est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 210
    Points : 166
    Points
    166
    Par défaut
    Tiens... je viens d'essayer ton bout de code sur une page blanche.

    Tu peux faire de même j'ai juste utiliser le code que tu as fourni et crée une méthode RadioButtonList1_SelectedIndexChanged bidon...

    Bien sûr je n'ai pas ta liaison de données mais tous les validateurs sont exécutés.

    J'obtiens bien le message associé à la non validation du CUSTOMVALIDATOR.

    Le problème est ailleurs...

    Si cela peut t'aider,
    Mow

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Oui, j'arrive au même résultat que toi.
    Cela suppose que tu as ajouté un Button pour tester. Dans ce cas, ça fonctionne effectivement.
    Pour moi, le pb vient du Wizard, qui me valide bien côté client lors du clic sur "Suivant", mais pas côté serveur...

    Merci pour le coup de main !

  7. #7
    mow
    mow est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 210
    Points : 166
    Points
    166
    Par défaut
    Non...
    Pour information, je n'ai pas eu à ajouter de bouton pour tes validateurs s'exécutent le fait de sortir du contrôle TEXTBOX à appeler les validateurs du contrôle.

    A plus tard,
    Mow

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Points : 1 646
    Points
    1 646
    Par défaut
    est ce que les 2 autres validators que tu as mis pour ton champ email fonctionnent?
    il me semble que les customvalidator fonctionnent avec un requiredfieldvalidator.

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Ca y est ! Je viens de trouver la solution.

    C'est bien à cause du fait que je passe par un Wizard. J'ai fait une nouvelle page pour tester :

    Page aspx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Wizard ID="Wizard1" runat="server" ActiveStepIndex="0">
                <WizardSteps>
                    <asp:WizardStep runat="server" Title="Step 1">
                        &nbsp;<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="TextBox1"
                            ErrorMessage="Erreur" OnServerValidate="CustomValidator1_ServerValidate" EnableClientScript="False" ValidationGroup="vg" ValidateEmptyText="True"></asp:CustomValidator>
                        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                        &nbsp; &nbsp;
                    </asp:WizardStep>
                    <asp:WizardStep runat="server" Title="Step 2">
                        Ok</asp:WizardStep>
                </WizardSteps>
            </asp:Wizard>
        </div>
        </form>
    </body>
    Page aspx.cs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
     
    public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            ((Button)Wizard1.FindControl("StartNavigationTemplateContainerID$StartNextButton")).ValidationGroup = "vg";
        }
        protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
        {
            args.IsValid = false;
        }
    }
    Le code ci-dessus fonctionne grâce à la ligne présente dans le page_load. En effet, le bouton suivant d'un Wizard n'a pas le même comportement qu'un "Button" classique, et on ne peut pas lui définir de ValidationGroup. La ligne dans le page_load permet d'affecter au bouton "Suivant" un ValidationGroup, ce qui permet d'exécuter la validation de mon TextBox.
    Si vous mettez la ligne en commentaire, vous verrez que la validation ne se fait pas.

    En tout cas, merci de m'avoir aiguillé vers la solution !

  10. #10
    mow
    mow est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 210
    Points : 166
    Points
    166
    Par défaut
    N'oublie pas de passer ton post en RESOLU

    A plus tard,
    Mow

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Oui, je cherchais justement le bouton...

    Merci !
    Tom

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

Discussions similaires

  1. Mon serveur proxy ne fonctionne pas comme prévu
    Par win_ubuntu dans le forum Entrée/Sortie
    Réponses: 0
    Dernier message: 28/04/2015, 19h34
  2. Contrainte unique ne fonctionne pas bien
    Par teken-new dans le forum JPA
    Réponses: 12
    Dernier message: 30/03/2013, 19h34
  3. update coté serveur ne fonctionne pas
    Par Golzinne dans le forum Silverlight
    Réponses: 4
    Dernier message: 15/06/2011, 09h27
  4. Redirections par header sur serveur IIS ne fonctionne pas
    Par Abac_Angelique dans le forum Langage
    Réponses: 3
    Dernier message: 02/02/2009, 13h04
  5. Serveur Web ne fonctionne pas en dehors du batiment
    Par Meunier dans le forum Apache
    Réponses: 4
    Dernier message: 23/04/2007, 22h13

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