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
- #lightswitch 2012 supporta nativamente #html5, #jquery e #jquerymobile. è stato mostrato girare su #ipad a #msteched
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Velocity arriva alla CTP3
- Mono 2.8 aggiunge .NET Framework 4, ASP.NET 4.0 e MVC 2
- Prima CTP per Portable Library Tools
- VS 2005 CTP già su MSDN Universal
- Microsoft aggiorna WinFS beta 1 per VS 2005
- Information Card Kits for ASP.NET and HTML
- Web Camp - HTML5 per il web di oggi
- Una preview della prossima versione di #VisualStudio con cui creare #metrostyle app http://aspitalia.com/build-win8 #BldWin