2010-10-30 5 views
4
<asp:UpdatePanel ID="LoginPanel" UpdateMode="Conditional" runat="server"> 
    <ContentTemplate> 
     <div id="login"> 
      <div class="row"> 
       <div class="label"> 
        <asp:Label ID="lblUsername" Text="<%$ Resources:Login, UserNameField %>" runat="server" /> 
       </div> 
       <div class="field"> 
        <asp:TextBox ID="txtUsername" MaxLength="12" runat="server" /> 
        <asp:RequiredFieldValidator ID="rfvUsername" ControlToValidate="txtUsername" ValidationGroup="vgLogin" SetFocusOnError="true" 
         ErrorMessage="*" ToolTip="<%$ Resources:Login, UserNameRequired %>" runat="server" /> 
       </div> 
      </div> 

      <div class="row"> 
       <div class="label"> 
        <asp:Label ID="lblPassword" Text="<%$ Resources:Login, PasswordField %>" runat="server" /> 
       </div> 
       <div class="field"> 
        <asp:TextBox ID="txtPassword" MaxLength="12" TextMode="Password" runat="server" /> 
        <asp:RequiredFieldValidator ID="rfvPassword" ControlToValidate="txtPassword" ValidationGroup="vgLogin" SetFocusOnError="true" 
         ErrorMessage="*" ToolTip="<%$ Resources:Login, PasswordRequired %>" runat="server" /> 
       </div> 
      </div> 

      <div class="row"> 
       <div class="label"> 
        <asp:Label ID="lblRemember" Text="<%$ Resources:Login, RememberField %>" runat="server" /> 
       </div> 
       <div> 
        <asp:CheckBox ID="chkRemember" Checked="true" ToolTip="<%$ Resources:Login, RememberToolTip %>" runat="server" /> 
       </div> 
      </div> 

      <div class="buttons"> 
       <asp:Button ID="btnLogin" Text="<%$ Resources:Login, Command %>" OnClick="btnLogin_Click" ValidationGroup="vgLogin" CausesValidation="true" runat="server" /> 
      </div> 
     </div> 
    </ContentTemplate> 
</asp:UpdatePanel> 

La première fois, les valideurs ne vérifient pas si les champs sont complétés ou non, le formulaire est simplement soumis quoi qu'il arrive, après ce premier hic, formulaire valide correctement chaque fois. Je sais que je peux juste demander (et devrait, indépendamment) si Page.IsValid côté serveur, mais je voudrais toujours que la validation alerte correctement l'erreur d'entrée de l'utilisateur la première fois au lieu d'attendre la réponse du serveur en premier.Validation de formulaire ASP.NET Ne fonctionne pas la première fois

Qu'est-ce que je fais mal?

+0

Quelle version d'asp.net utilisez-vous? Les asp.net dans les validateurs de la version 2.0 ne fonctionnent pas avec les updatepanels (parce que les updatepanels n'existaient pas à la sortie de la version 2.0) mais avec la version 3.5. Aussi un exemple avec du texte au lieu des ressources: Les options de connexion seraient préférées car cela rend la mise en place d'un cas de test plus rapide –

+0

J'utilise .net 4.0 – bevacqua

+1

J'ai essayé l'exemple de code fourni, et je n'ai pas pu simuler votre cas. Je vous recommande de déboguer la validation js en utilisant les outils de développement I.E ou firebug (commencer par les fonctions 'ValidatorOnLoad' et' ValidatorCommonOnSubmit'). –

Répondre

1

L'ordre de chargement des fichiers JS peut poser des problèmes ici, s'il y a des dépendances entre eux. En raison de la latence aléatoire, certaines dépendances n'ont peut-être pas encore été satisfaites, ce qui entraîne la rupture des fonctionnalités. Votre console peut donner des indices si c'est le cas. Sur les chargements de page suivants tout semble bien se passer, car les fichiers JS ont été mis en cache et sont maintenant chargés sans latence dans le bon ordre.

choses à essayer:

Espérons que cela aide.

0

J'ai eu quelque chose de semblable se produit quand il y avait une grande quantité de javascript en cours de chargement, ou quand il y a une erreur javascript sans rapport (en général, mais pas toujours lié à la grande quantité de javascript.

+0

mon javascript est réduit au minimum, en fait je pensais que ça avait un rapport avec moi ayant un événement onclientclick mais j'ai supprimé ça et ça ne valide toujours pas la première fois. – bevacqua

0

Cela ne peut pas Je suis confronté à des problèmes similaires dans le passé.Les contrôles de validation ASP ne semblent pas vraiment "jouer" à l'intérieur de UpdatePanels Je pense que la raison en est que lorsqu'ils tentent d'effectuer tout type de validation, ils viewstate est cependant en dehors de la zone du panneau de mise à jour, ce qui signifie que vous mettez à jour le "milieu" de la page, sans que l'état de la page ne soit mis à jour, ce qui rend le Caroline du Nord. En tout cas, pour le prouver, supprimez le panneau de mise à jour de vos contrôles, soumettez votre formulaire et vérifiez si vos contrôles de validation fonctionnent. Malheureusement, pour une solution de contournement, j'ai créé des fonctions javascript personnalisées pour effectuer la validation côté client, puis également effectuer une validation côté serveur et afficher les erreurs éventuelles. Dans ces scénarios, j'ai évité d'utiliser les contrôles ASP .NET Validation.

Bonne chance = \

Questions connexes