Condividi tramite


ProfileBase Classe

Definizione

Fornisce l'accesso non tipizzato alle informazioni e ai valori delle proprietà del profilo.

public ref class ProfileBase : System::Configuration::SettingsBase
public class ProfileBase : System.Configuration.SettingsBase
type ProfileBase = class
    inherit SettingsBase
Public Class ProfileBase
Inherits SettingsBase
Ereditarietà
ProfileBase
Derivato

Esempio

Nell'esempio di codice seguente viene illustrato un file Web.config che specifica un profilo utente contenente una proprietà di tipo e una ZipCodeRecentSearchList proprietà di tipo stringStringCollection. La proprietà generata Profile dell'oggetto corrente HttpContext avrà funzioni di accesso fortemente tipizzata per ognuna delle proprietà specificate.

<configuration>
  <system.web>
    <anonymousIdentification enabled="true" />

    <profile enabled="true" defaultProvider="SqlProvider" >
      <properties>
        <add name="ZipCode" allowAnonymous="true" />
        <add name="RecentSearchList"
          type="System.Collections.Specialized.StringCollection"
          serializeAs="Xml"
          allowAnonymous="true" />
      </properties>
    </profile>
  </system.web>
</configuration>

Nell'esempio seguente viene illustrata una pagina di ASP.NET che legge e imposta la ZipCode proprietà specificata per il profilo utente. Prima di tentare di eseguire questo codice, impostare il provider sul valore predefinito AspNetSqlProvider nelle impostazioni di configurazione ASP.NET per il sito Web.

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

public void Page_PreRender()
{
  if (Profile.ZipCode == null)
  {
    PersonalizePanel.Visible = false;
    GetZipCodePanel.Visible = true;
  }
  else
  {
    ZipCodeLabel.Text = Profile.ZipCode;

    // Get personalized information for zip code here.

    PersonalizePanel.Visible = true;
    GetZipCodePanel.Visible = false;
  }
}

public void ChangeZipCode_OnClick(object sender, EventArgs args)
{
  ZipCodeTextBox.Text = Profile.ZipCode;
  Profile.ZipCode = null;

  PersonalizePanel.Visible = false;
  GetZipCodePanel.Visible = true;
}

public void EnterZipCode_OnClick(object sender, EventArgs args)
{
  Profile.ZipCode = ZipCodeTextBox.Text;
}

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Home Page</title>
</head>
<body>

<form id="form1" runat="server">
  <table border="1" cellpadding="2" cellspacing="2">
    <tr>
      <td>
        <asp:Panel id="PersonalizePanel" runat="Server" Visible="False">
          Information for Zip Code: <asp:Label id="ZipCodeLabel" Runat="Server" /><br />
          <!-- Information for Zip Code here. -->
          <br />
          <asp:LinkButton id="ChangeZipCodeButton" Runat="Server" Text="Change Your Zip Code"
                          OnClick="ChangeZipCode_OnClick" />
        </asp:Panel>
        <asp:Panel id="GetZipCodePanel" runat="Server" Visible="False">
          You can personalize this page by entering your Zip Code: 
          <asp:TextBox id="ZipCodeTextBox" Columns="5" MaxLength="5" runat="Server" />
          <asp:LinkButton id="EnterZipCodeButton" Runat="Server" Text="Go"
                          OnClick="EnterZipCode_OnClick" />
        </asp:Panel>
      </td>
    </tr>
  </table>
</form>

</body>
</html>
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

Public Sub Page_PreRender()

  If Profile.ZipCode = Nothing Then
    PersonalizePanel.Visible = False
    GetZipCodePanel.Visible = True
  Else
    ZipCodeLabel.Text = Profile.ZipCode

    ' Get personalized information for zip code here.

    PersonalizePanel.Visible = True
    GetZipCodePanel.Visible = False
  End If

End Sub

Public Sub ChangeZipCode_OnClick(sender As Object, args As EventArgs)
  ZipCodeTextBox.Text = Profile.ZipCode
  Profile.ZipCode = Nothing

  PersonalizePanel.Visible = False
  GetZipCodePanel.Visible = True
End Sub

Public Sub EnterZipCode_OnClick(sender As Object, args As EventArgs)
  Profile.ZipCode = ZipCodeTextBox.Text
End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Home Page</title>
</head>
<body>

<form id="form1" runat="server">
  <table border="1" cellpadding="2" cellspacing="2">
    <tr>
      <td>
        <asp:Panel id="PersonalizePanel" runat="Server" Visible="False">
          Information for Zip Code: <asp:Label id="ZipCodeLabel" Runat="Server" /><br />
          <!-- Information for Zip Code here. -->
          <br />
          <asp:LinkButton id="ChangeZipCodeButton" Runat="Server" Text="Change Your Zip Code"
                          OnClick="ChangeZipCode_OnClick" />
        </asp:Panel>
        <asp:Panel id="GetZipCodePanel" runat="Server" Visible="False">
          You can personalize this page by entering your Zip Code: 
          <asp:TextBox id="ZipCodeTextBox" Columns="5" MaxLength="5" runat="Server" />
          <asp:LinkButton id="EnterZipCodeButton" Runat="Server" Text="Go"
                          OnClick="EnterZipCode_OnClick" />
        </asp:Panel>
      </td>
    </tr>
  </table>
</form>

</body>
</html>

Nell'esempio ProfileBase di codice seguente viene definita una classe che eredita dalla classe per creare un profilo personalizzato. Il tipo del profilo personalizzato viene specificato nell'attributo inherits dell'elemento di configurazione del profilo nel file di Web.config per un'applicazione.

Importante

Questo esempio contiene una casella di testo che accetta l'input utente, ovvero una potenziale minaccia di sicurezza. Per impostazione predefinita, le pagine Web ASP.NET verificano che l'input dell'utente non includa script o elementi HTML. Per altre informazioni, vedere Cenni preliminari sugli attacchi tramite script.

using System;
using System.Web.Profile;

namespace Samples.AspNet.Profile
{
  public class EmployeeProfile : ProfileBase
  {
    [SettingsAllowAnonymous(false)]
    [ProfileProvider("EmployeeInfoProvider")]
    public string Department
    {
      get { return base["EmployeeDepartment"].ToString(); }
      set { base["EmployeeDepartment"] = value; }
    }

    [SettingsAllowAnonymous(false)]
    [ProfileProvider("EmployeeInfoProvider")]
    public EmployeeInfo Details
    {
      get { return (EmployeeInfo)base["EmployeeInfo"]; }
      set { base["EmployeeInfo"] = value; }
    }
  }

  public class EmployeeInfo
  {
    public string Name;
    public string Address;
    public string Phone;
    public string EmergencyContactName;
    public string EmergencyContactAddress;
    public string EmergencyContactPhone;
  }
}
Imports System.Web.Profile

Namespace Samples.AspNet.Profile

  Public Class EmployeeProfile
    Inherits ProfileBase

    <SettingsAllowAnonymous(False)> _
    <ProfileProvider("EmployeeInfoProvider")> _
    Public Property Department As String
      Get
        Return MyBase.Item("EmployeeDepartment").ToString()
      End Get
      Set
        MyBase.Item("EmployeeDepartment") = value
      End Set
    End Property

    <SettingsAllowAnonymous(False)> _
    <ProfileProvider("EmployeeInfoProvider")> _
    Public Property Details As EmployeeInfo
      Get
        Return CType(MyBase.Item("EmployeeInfo"), EmployeeInfo)
      End Get
      Set
        MyBase.Item("EmployeeInfo") = value
      End Set
    End Property
  End Class

  Public Class EmployeeInfo
    Public Name As String
    Public Address As String
    Public Phone As String
    Public EmergencyContactName As String
    Public EmergencyContactAddress As String
    Public EmergencyContactPhone As String
  End Class

End Namespace

Commenti

ASP.NET usa la classe per creare la ProfileBase classe usata per il profilo utente. Quando viene avviata un'applicazione con il profilo utente abilitato, ASP.NET crea una nuova classe di tipo ProfileCommon, che eredita dalla ProfileBase classe . Le funzioni di accesso fortemente tipizzata vengono aggiunte alla ProfileCommon classe per ogni proprietà definita nella sezione configurazione del profilo . Le funzioni di accesso fortemente tipizzata della ProfileCommon classe chiamano rispettivamente i GetPropertyValue metodi e SetPropertyValue della ProfileBase classe base per recuperare e impostare i valori delle proprietà del profilo. Un'istanza della ProfileCommon classe viene impostata come valore della Profile proprietà per l'applicazione ASP.NET.

Per creare un'istanza di un profilo utente in un'applicazione ASP.NET, è consigliabile usare il Create metodo .

Note per gli eredi

È possibile creare un'implementazione del profilo personalizzata che eredita dalla ProfileBase classe astratta e definisce le proprietà per il profilo utente non specificato nell'elemento di configurazione del profilo . È possibile specificare un tipo di profilo utente personalizzato nel file web.config con l'attributo inherits dell'elemento di configurazione del profilo , come illustrato nell'esempio seguente. Il codice per la EmployeeProfile classe è incluso nella sezione Esempio di questo argomento.

<configuration>
   <system.web>
      <profile inherits="Samples.AspNet.Profile.EmployeeProfile"  
      defaultProvider="SqlProvider">  
      <providers>  
         <clear />  
         <add  
            name="SqlProvider"  
            type="System.Web.Profile.SqlProfileProvider"   
            connectionStringName="SqlServices"   
            description="SQL Profile Provider for Sample"/>   
         <add  
            name="EmployeeInfoProvider"  
            type="System.Web.Profile.SqlProfileProvider"   
            connectionStringName="SqlServices"   
            description="SQL Profile Provider for Employee Info"/>   
      </providers>  
      
      <properties>  
         <add name="GarmentSize" />  
      </properties>  
      </profile>  
   </system.web>
</configuration>

Costruttori

ProfileBase()

Crea un'istanza della classe ProfileBase.

Proprietà

Context

Ottiene il contesto delle impostazioni associato.

(Ereditato da SettingsBase)
IsAnonymous

Ottiene un valore che indica se il profilo utente è relativo a un utente anonimo.

IsDirty

Ottiene un valore che indica se alcune proprietà del profilo sono state modificate.

IsSynchronized

Ottiene un valore che indica se l'accesso all'oggetto è sincronizzato (thread-safe).

(Ereditato da SettingsBase)
Item[String]

Ottiene o imposta il valore di una proprietà del profilo indicizzato dal nome della proprietà.

LastActivityDate

Ottiene la data e l'ora dell'ultima modifica o lettura del profilo.

LastUpdatedDate

Ottiene la data e l'ora dell'ultima modifica del profilo.

Properties

Ottiene un insieme di oggetti SettingsProperty per ciascuna proprietà del profilo.

PropertyValues

Ottiene un insieme di valori delle proprietà di impostazione.

(Ereditato da SettingsBase)
Providers

Ottiene un insieme di provider di impostazioni.

(Ereditato da SettingsBase)
UserName

Ottiene il nome utente relativo al profilo.

Metodi

Create(String)

Viene utilizzato da ASP.NET per creare un'istanza di un profilo per il nome utente specificato.

Create(String, Boolean)

Viene utilizzato da ASP.NET per creare un'istanza di un profilo per il nome utente specificato. Questo metodo accetta un parametro che indica se l'utente è autenticato o anonimo.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetProfileGroup(String)

Ottiene un gruppo di proprietà identificate da un nome di gruppo.

GetPropertyValue(String)

Ottiene il valore di una proprietà del profilo.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
Initialize(SettingsContext, SettingsPropertyCollection, SettingsProviderCollection)

Inizializza le proprietà interne utilizzate dall'oggetto SettingsBase.

(Ereditato da SettingsBase)
Initialize(String, Boolean)

Inizializza le informazioni e i valori delle proprietà del profilo per l'utente corrente.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
Save()

Aggiorna l'origine dati del profilo in base ai valori delle proprietà del profilo modificati.

SetPropertyValue(String, Object)

Imposta il valore di una proprietà del profilo.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a

Vedi anche