Freigeben über


ProfileBase Klasse

Definition

Ermöglicht nicht typisierten Zugriff auf Profileigenschaftswerte und Informationen.

public ref class ProfileBase : System::Configuration::SettingsBase
public class ProfileBase : System.Configuration.SettingsBase
type ProfileBase = class
    inherit SettingsBase
Public Class ProfileBase
Inherits SettingsBase
Vererbung
ProfileBase
Abgeleitet

Beispiele

Das folgende Codebeispiel zeigt eine Web.config-Datei, die ein Benutzerprofil angibt, das eine ZipCode Eigenschaft vom Typ string und eine RecentSearchList Eigenschaft vom Typ StringCollectionenthält. Die generierte Profile Eigenschaft des aktuellen HttpContext verfügt über stark typisierte Accessoren für jede der angegebenen Eigenschaften.

<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>

Das folgende Beispiel zeigt eine ASP.NET Seite, die die für das ZipCode Benutzerprofil angegebene Eigenschaft liest und festlegt. Bevor Sie versuchen, diesen Code auszuführen, legen Sie den Anbieter in den ASP.NET Konfigurationseinstellungen für die Website auf den Standardwert AspNetSqlProvider fest.

<%@ 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>

Im folgenden Codebeispiel wird eine Klasse definiert, die von der ProfileBase -Klasse erbt, um ein benutzerdefiniertes Profil zu erstellen. Der Typ des benutzerdefinierten Profils wird im inherits Attribut des Profilkonfigurationselements in der Web.config-Datei für eine Anwendung angegeben.

Wichtig

Dieses Beispiel enthält ein Textfeld, das Benutzereingaben akzeptiert, was eine potenzielle Sicherheitsgefährdung darstellt. Standardmäßig stellen ASP.NET-Webseiten sicher, dass Benutzereingaben keine Skript- oder HTML-Elemente enthalten. Weitere Informationen finden Sie unter Übersicht über Skriptangriffe.

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

Hinweise

ASP.NET verwendet die ProfileBase -Klasse, um die Klasse zu erstellen, die für das Benutzerprofil verwendet wird. Wenn eine Anwendung gestartet wird, für die das Benutzerprofil aktiviert ist, erstellt ASP.NET eine neue Klasse vom Typ ProfileCommon, die von der ProfileBase -Klasse erbt. Stark typisierte Accessoren werden der ProfileCommon -Klasse für jede eigenschaft hinzugefügt, die im Abschnitt profilkonfiguration definiert ist. Stark typisierte Accessor die ProfileCommon -Klasse rufen die GetPropertyValue und SetPropertyValue Methoden die ProfileBase Basisklasse zum Abrufen und festlegen Profil Eigenschaftswerte bzw. Eine Instanz der ProfileCommon -Klasse wird als Wert der Profile -Eigenschaft für die ASP.NET-Anwendung festgelegt.

Um eine Instanz eines Benutzerprofils in einer ASP.NET-Anwendung zu erstellen, empfiehlt es sich, die Create -Methode zu verwenden.

Hinweise für Vererber

Sie können eine benutzerdefinierte Profilimplementierung erstellen, die von der ProfileBase abstrakten Klasse erbt und Eigenschaften für das Benutzerprofil definiert, die nicht im Profilkonfigurationselement angegeben sind. Sie können einen benutzerdefinierten Benutzerprofiltyp in der datei web.config mit dem inherits -Attribut des Profilkonfigurationselements angeben, wie im folgenden Beispiel gezeigt. Der Code für die EmployeeProfile -Klasse ist im Abschnitt Beispiel dieses Themas enthalten.

<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>

Konstruktoren

ProfileBase()

Erstellt eine Instanz der ProfileBase-Klasse.

Eigenschaften

Context

Ruft den zugeordneten Einstellungskontext ab.

(Geerbt von SettingsBase)
IsAnonymous

Ruft einen Wert ab, der angibt, ob das Benutzerprofil für einen anonymen Benutzer ist.

IsDirty

Ruft einen Wert ab, der angibt, ob Profileigenschaften geändert worden sind.

IsSynchronized

Ruft einen Wert ab, der angibt, ob der Zugriff auf das Objekt synchronisiert (threadsicher) ist.

(Geerbt von SettingsBase)
Item[String]

Ruft einen vom Eigenschaftennamen indizierten Profileigenschaftswert ab oder legt diesen fest.

LastActivityDate

Ruft das letzte Datum und die Zeit ab, als das Profil gelesen oder geändert wurde.

LastUpdatedDate

Ruft das letzte Datum und die Zeit ab, als das Profil geändert wurde.

Properties

Ruft eine Auflistung von SettingsProperty-Objekten für jede Eigenschaft im Profil ab.

PropertyValues

Ruft eine Auflistung von Einstellungseigenschaftswerten ab.

(Geerbt von SettingsBase)
Providers

Ruft eine Auflistung von Einstellungsanbietern ab.

(Geerbt von SettingsBase)
UserName

Ruft den Benutzernamen für das Profil ab.

Methoden

Create(String)

Wird von ASP.NET verwendet, um eine Instanz eines Profils für den angegebenen Benutzernamen zu erstellen.

Create(String, Boolean)

Wird von ASP.NET verwendet, um eine Instanz eines Profils für den angegebenen Benutzernamen zu erstellen. Akzeptiert einen Parameter, der angibt, ob der Benutzer authentifiziert oder anonym ist.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetProfileGroup(String)

Ruft eine Gruppe von Eigenschaften ab, die durch einen Gruppennamen bezeichnet werden.

GetPropertyValue(String)

Ruft den Wert einer Profileigenschaft ab.

GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
Initialize(SettingsContext, SettingsPropertyCollection, SettingsProviderCollection)

Initialisiert vom SettingsBase-Objekt verwendete interne Eigenschaften.

(Geerbt von SettingsBase)
Initialize(String, Boolean)

Initialisiert die Profileigenschaftswerte und die Informationen für den aktuellen Benutzer.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
Save()

Aktualisiert die Profildatenquelle mit geänderten Profileigenschaftswerten.

SetPropertyValue(String, Object)

Legt den Wert einer Profileigenschaft fest.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für:

Weitere Informationen