Le Membership API permettono di memorizzare solo alcuni dati di un utente, ovvero quelli necessari per l'identificazione (UserName, password, email, ecc.).
Una delle operazini più comuni quando si vuole registrare un nuovo utente è aggiungere alti dati come il nome, l'età, il sesso e altro ancora. La gestione di questi dati è affidata invece alle Profile API.
Quando si usa il controllo CreateUserWizard per creare l'utente, si possono aggiungere diversi campi per inserire anche i dati che vanno nel suo profilo. Il controllo salva automaticamente l'utente, ma poichè Profile API e Membership API non sono completamente integrate, il compito di salvare il profilo contestualmente alla creazione dell'utente è compito nostro.
Innanzitutto si abilita il Profile nel web.config aggiungendo un campo per l'età:
<profile enabled="true"> <properties> <add name="Age" type="Int32"/> </properties> </profile>
Successivamente si trasforma in template lo step della creazione dell'utente aggiungendo il nuovo campo:
<asp:createuserwizard id="CreateUserWizard1" runat="server" oncreateduser="CreateUserWizard1_CreatedUser" > <wizardsteps> <asp:createuserwizardstep id="CreateUserWizardStep1" runat="server"> <contenttemplate> ... <tr> <td align="right"><asp:label id="Label1" runat="server" associatedcontrolid="Answer">Age</asp:label></td> <td><asp:textbox id="txtAge" runat="server"></asp:textbox></td> </tr> <tr> <td colspan="2"><asp:label id="Label1" runat="server" associatedcontrolid="Answer">Age</asp:label></td> <td><asp:textbox id="txtAge" runat="server"></asp:textbox></td> </tr> ... </contenttemplate> </asp:createuserwizardstep> </wizardsteps> ... </asp:createuserwizard>
Infine si crea un delegate per la gestione dell'evento CreatedUser, che genererà il nuovo profilo riempiendo il campo con il valore inserito nella textbox.
protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e) { // creiamo il profilo vuoto per la prima volta ProfileCommon p = (ProfileCommon)ProfileCommon.Create(CreateUserWizard1.UserName, true); // popoliamo con i valori presi dalla TextBox p.Age = Convert.ToInt32(((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("txtAge")).Text); // salviamo il profilo in maniera esplicita p.Save(); }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Workflow di continuous deployment tramite pull request label in GitHub
- Ricevere avvisi su metriche dei server Azure Arc
- Effettuare l'upload di un file via FTP con la libreria FluentFTP di .NET
- Effettuare update massivi con Entity Framework Core 7
- Monitorare i server on-premises con Azure Arc
- Linting di un Dockerfile con un workflow di GitHub
- Impostare dinamicamente il nome di una run di un workflow di GitHub
- .NET Conference Italia 2022 - Milano e Online
- Sottoscrizione agli eventi sul contenitore in JavaScript
- Catturare la telemetria degli eventi di output cache in ASP.NET Core