2009-10-12 7 views
0

Je souhaite autoriser l'utilisateur à s'éloigner d'une page Inscription. Cependant, la page de registre est un ASP: Wizard avec RequiredFieldValidators.ASP.NET RequiredFieldValidator ne me laisse pas quitter un ASP: Assistant

Comment puis-je résoudre ce problème sans supprimer les RequiredFieldValidators? Le bouton "Next" de l'assistant semble être intégré au contrôle Wizard et ne semble pas me permettre d'appliquer une propriété ValidationGroup, ce qui semble être la manière habituelle de gérer cette situation.

Merci

Répondre

2

De http://forums.asp.net/p/1022184/1385194.aspx

Après une recherche à plusieurs reprises sur la façon de valider mes étapes de contrôle de l'assistant, je suis venu avec ces solutions. N'oubliez pas que chaque étape doit avoir son propre groupe de validation. Pour ces exemples, j'utilise "Form" comme groupe de validation.

1) Validation sur le bouton suivant. Pour celui-ci, je remplace simplement les boutons Précédent et Suivant générés par le contrôle Wizard en utilisant 2 asp: Button. Vous définissez ensuite la validation de cause sur true et vous affectez un groupe de validation. Notez que la partie importante est dans la section CommandName.

<StepNavigationTemplate > 
<asp:Button ID="btnPrevious" runat="server" CssClass="WizardControlButton" Text="Previous" CommandName="MovePrevious" /> 
<asp:Button ID="btnNext" runat="server" CssClass="WizardControlButton" CommandName="MoveNext" Text="Next" CausesValidation="true" ValidationGroup="Form" /> 
</StepNavigationTemplate> 

2) Validation sur la barre latérale cliquez Celui-ci est aussi simple. Vous ajoutez le code dans l'événement SideBarButtonClick de votre contrôle, puis vous vérifiez l'ID de l'étape que vous êtes actuellement. Après il valide la page avec le groupe de validation dans les paramètres. Si la page n'est pas valide Il annule l'événement.

Protected Sub wizRegistration_SideBarButtonClick(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.WizardNavigationEventArgs) Handles wizRegistration.SideBarButtonClick 
    If wizRegistration.ActiveStep.ID = "wizSelectPostalCode" AndAlso e.NextStepIndex > e.CurrentStepIndex Then 
     Page.Validate("Form") 
     If Not Page.IsValid() Then 
      e.Cancel = True 
     End If 
    End If 
End Sub 
+0

merci beaucoup. Je ne peux pas croire que je ne pouvais pas le trouver moi-même. Ça marche! Remarques à tous ceux qui trouvent cette solution dans le futur: si vous devez remplacer la première étape du bouton de votre assistant, utilisez . N'oubliez pas de câbler l'événement wizRegistration_SideBarButtonClick dans votre tag . – HaterTot

0

Pouvez-vous mettre un autre bouton en dehors de l'assistant étiqueté « Annuler » ou « Passer » et définissez la propriété CausesValidation False?

+0

cela semble être une solution qui fonctionnerait mais qui diminuerait considérablement de l'interface utilisateur raffinée que je tente de créer. – HaterTot

1

J'avais le même problème. Le besoin d'origine était un moyen pour permettre à un utilisateur de naviguer à partir d'une page de contrôle Assistant ASP.NET qui implémentait la validation via le mécanisme ValidationGroup du cadre. Dans mon cas, j'avais un contrôle <asp:HyperLink> dans l'en-tête de mon fichier principal Site.master.

Plutôt que de créer un ValidationGroup pour la page de l'assistant et associer les boutons de l'assistant avec, je choisi de « exclure » mon <asp:HyperLink> contrôle en l'affectant à un autre, ValidationGroup utilisé.