#819 - Aggiungere il profilo agli utenti creati tramite il controllo CreateUserWizard

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();
}

Nota: Questo script contiene un allegato.


Approfondimenti

Commenti

Esprimi il tuo giudizio su questo script:

Per procedere devi essere autenticato.

punx44 scrive:
#819 - Aggiungere il profilo agli utenti creati tramite il controllo CreateUserWizard

ciaomi associo ai complimenti di skater.la mia domanda è questa.una volta salvato il profilo come faccio a reuperarlo da un'altra pagina?ti illustro ...
martedì 16 ottobre 2007 | 2 risposte
skater scrive:
#819 - Aggiungere il profilo agli utenti creati tramite il controllo CreateUserWizard

ciao, complimenti per questo script.. veramente ottimo (sarà che forse era esattamente ciò che serviva a me!!)volevo cmq chiedere quali altri tipi di ...
martedì 11 settembre 2007 | 1 risposta

Per inserire un commento, devi registrarti alla nostra community.




IN EVIDENZA
MISC