Redéfinition du controle CreateUserwizard
Salut
Je sèche sur la manipulation du controle CreateUserWizard. Je tente de le personaliser mais j'ai quelques souci sur l'utilisation du Template.
En fait, je voudrais pouvoir manipuler certaine chose sans pour autant tout reprogrammer. Je me demande si c'est vraiment possible.
Je vais faire une exposé le plus clair possible de mon état d'avancement.
Donc, j'ai mis un CreateUserWiazrd de cette manière :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
<asp:CreateUserWizard ID="CreateUserWizard1" runat="server" Width="400">
<WizardSteps>
<asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server">
<ContentTemplate>
<asp:Label ID="UserNameLabel" runat="server"></asp:Label>
<asp:TextBox ID="UserName" runat="server"></asp:TextBox>
<asp:TextBox ID="Email" runat="server"></asp:TextBox>
<asp:TextBox ID="Question" runat="server"></asp:TextBox>
<asp:TextBox ID="Answer" runat="server"></asp:TextBox>
<asp:TextBox ID="Password" runat="server"></asp:TextBox>
</ContentTemplate>
</asp:CreateUserWizardStep>
<asp:CompleteWizardStep ID="CompleteWizardStep1" runat="server"></asp:CompleteWizardStep>
</WizardSteps>
</asp:CreateUserWizard> |
Ensuite je fais ça dans le CodeBehind :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
If Membership.Provider.ApplicationName = "/" Then
OW = "/"
Else
OW = Request.Url.Host
End If
CreateUserWizard1.CreateUserStep.ContentTemplateContainer.Controls.Clear()
Dim UserName, Email, Question, Answer, Password As New TextBox
UserName.ID = "UserName"
UserName.Text = "biloute"
Email.ID = "Email"
Email.Text = "Mail à moi"
Question.ID = "Question"
Question.Text = "Question à moi"
Answer.ID = "Answer"
Answer.Text = "Answer à moi"
Password.ID = "Password"
Password.Text = "Password à moi"
CreateUserWizard1.CreateUserStep.ContentTemplateContainer.Controls.Add(UserName)
CreateUserWizard1.CreateUserStep.ContentTemplateContainer.Controls.Add(Email)
CreateUserWizard1.CreateUserStep.ContentTemplateContainer.Controls.Add(Question)
CreateUserWizard1.CreateUserStep.ContentTemplateContainer.Controls.Add(Answer)
CreateUserWizard1.CreateUserStep.ContentTemplateContainer.Controls.Add(Password)
End Sub |
Et quand je clique sur le bouton pour valider l'inscription il me mets le message suivant :
Citation:
Le paramètre 'username' ne doit pas être vide.
Nom du paramètre : username
Sur la ligne de code suivante :
Code:
1 2 3 4 5
|
Protected Sub CreateUserWizard1_CreatedUser(ByVal sender As Object, ByVal e As System.EventArgs) Handles CreateUserWizard1.CreatedUser
Roles.AddUserToRole(CreateUserWizard1.UserName, "Membre")
End Sub |
Alors je me demande comment faire pour que le champ "UserName" que j'ai défini soit considéré comme le champ qui sert à gérer le UserName.
En fait, je vide les champs car je veux pouvoir les générer par CodeBehind. Mon idée est de faire une contrôle dynamique dans lequel je pourrais afficher ou pas certains champs tout en gardant les méthode du contrôle CreateUserWizard pour ne pas avoir à reprogrammer tous les enregistrements dans la base de données ou les principes de vérification ou autre méthode bien utile du contrôle.
Mon but est de faire, par exemple, que le contrôle puisse demande ou pas la Question/ Réponse de sécurité en fonction d'un paramettre dans la BDD ou de pouvoir déterminer une Login sous forme d'Email et donc ne pas présenter les deux champs pour la saisie mais un seul, le deuxième recevant la saisie du premier ou encore de faire une comparaison de saisie entre les deux champs Login/Email pour confirmation.
Pouvez vous m'aider ?