Un custom control per visualizzare le informazioni di Profile API

di Daniele Bochicchio, in ASP.NET 2.0, Custom Control, Profile API,

Membership API è corredato da tutta una serie di web control in grado di rendere quasi perfetta l'integrazione con ASP.NET, garantendo un approccio allo sfruttamento delle funzionalità completamente basato su un approccio dichiarativo, facendo uso dunque di markup anzichè codice.

La mancanza più grande in tal senso di Profile API è proprio nella mancata disponibilità di un controllo che mostri a video il valore di una proprietà, dato uno username, così da rendere più agevole la creazione dell'interfaccia.

Questa funzionalità si può implementare con questo semplice custom control.

using System;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Profile;

namespace ASPItalia.com.Web.UI.Controls
{

  public class ProfileBrowser : Control
  {
    private string _propertyName;
    private string _defaultValue = string.Empty;
    private ProfileBase _profile;
    private string _username;

    public string Username
    {
      get { return _username; }
      set { _username = value; }
    }

    public string DefaultValue
    {
      get { return _defaultValue; }
      set { _defaultValue = value; }
    }

    public string PropertyName
    {
      get { return _propertyName; }
      set { _propertyName = value; }
    }

    protected override void CreateChildControls()
    {
      base.CreateChildControls();

      if (string.IsNullOrEmpty(Username) && Page.User.Identity.IsAuthenticated())
        Username = Page.User.Identity.Name;

      if (!string.IsNullOrEmpty(Username))
        _profile = ProfileBase.Create(Username);
    }

    protected override void Render(HtmlTextWriter writer)
    {
      string value = null;
      if (_profile != null)
      {
        if (_profile.GetPropertyValue(PropertyName)!= null)
          value = _profile.GetPropertyValue(PropertyName).ToString();

        if (!string.IsNullOrEmpty(value))
          writer.Write(value);
      }

      if (string.IsNullOrEmpty(value) && !string.IsNullOrEmpty(DefaultValue))
        writer.Write(DefaultValue);

      base.Render(writer);
    }
  }
}

Una volta registrato nella pagina, è poi possibile accedere ai valori del profilo con questa semplice sintassi:

<aspitalia:ProfileBrowser DefaultValue="Anonimo" PropertyName="FirstName" runat="server" />

Per approfondimenti su Profile API, si veda:
http://tags.aspitalia.com/Profile_API/

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

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