Udostępnij za pośrednictwem


ProfileBase Klasa

Definicja

Zapewnia nietypowy dostęp do wartości właściwości profilu i informacji.

public ref class ProfileBase : System::Configuration::SettingsBase
public class ProfileBase : System.Configuration.SettingsBase
type ProfileBase = class
    inherit SettingsBase
Public Class ProfileBase
Inherits SettingsBase
Dziedziczenie
ProfileBase
Pochodne

Przykłady

Poniższy przykład kodu przedstawia plik Web.config, który określa profil użytkownika zawierający ZipCode właściwość typu string i RecentSearchList właściwość typu StringCollection. Wygenerowana Profile właściwość bieżącego HttpContext będzie mieć silnie typizowane metody dostępu dla każdej z określonych właściwości.

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

Poniższy przykład przedstawia stronę ASP.NET, która odczytuje i ustawia ZipCode właściwość określoną dla profilu użytkownika. Przed podjęciem próby uruchomienia tego kodu ustaw dostawcę na wartość domyślną AspNetSqlProvider w ustawieniach konfiguracji ASP.NET dla witryny sieci 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>

Poniższy przykład kodu definiuje klasę dziedziczą po klasie w ProfileBase celu utworzenia profilu niestandardowego. Typ profilu niestandardowego jest określony w inherits atrybucie elementu konfiguracji profilu w pliku Web.config dla aplikacji.

Ważne

Ten przykład zawiera pole tekstowe, które akceptuje dane wejściowe użytkownika, co jest potencjalnym zagrożeniem bezpieczeństwa. Domyślnie ASP.NET strony sieci Web sprawdzają, czy dane wejściowe użytkownika nie zawierają skryptów ani elementów HTML. Aby uzyskać więcej informacji, zobacz Script Exploits Overview (Omówienie luk w zabezpieczeniach skryptów).

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

Uwagi

ASP.NET używa ProfileBase klasy do utworzenia klasy używanej dla profilu użytkownika. Po uruchomieniu aplikacji z włączonym profilem użytkownika ASP.NET tworzy nową klasę typu ProfileCommon, która dziedziczy z ProfileBase klasy . Silnie typizowane metody dostępu są dodawane do ProfileCommon klasy dla każdej właściwości zdefiniowanej w sekcji konfiguracji profilu . Silnie typizowane metody dostępu ProfileCommon klasy wywołają GetPropertyValue metody i SetPropertyValue klasy bazowej ProfileBase , aby pobrać i ustawić odpowiednio wartości właściwości profilu. Wystąpienie ProfileCommon klasy jest ustawiane jako wartość Profile właściwości dla aplikacji ASP.NET.

Aby utworzyć wystąpienie profilu użytkownika w aplikacji ASP.NET, zaleca się użycie Create metody .

Uwagi dotyczące dziedziczenia

Można utworzyć niestandardową implementację profilu, która dziedziczy z ProfileBase klasy abstrakcyjnej i definiuje właściwości profilu użytkownika, które nie są określone w elemecie konfiguracji profilu . W pliku web.config można określić niestandardowy typ profilu użytkownika z inherits atrybutem elementu konfiguracji profilu , jak pokazano w poniższym przykładzie. Kod klasy EmployeeProfile znajduje się w sekcji Przykład tego tematu.

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

Konstruktory

ProfileBase()

Tworzy wystąpienie klasy ProfileBase.

Właściwości

Context

Pobiera kontekst skojarzonych ustawień.

(Odziedziczone po SettingsBase)
IsAnonymous

Pobiera wartość wskazującą, czy profil użytkownika jest przeznaczony dla użytkownika anonimowego.

IsDirty

Pobiera wartość wskazującą, czy którakolwiek z właściwości profilu została zmodyfikowana.

IsSynchronized

Pobiera wartość wskazującą, czy dostęp do obiektu jest synchronizowany (bezpieczny wątek).

(Odziedziczone po SettingsBase)
Item[String]

Pobiera lub ustawia wartość właściwości profilu indeksowaną przez nazwę właściwości.

LastActivityDate

Pobiera najnowszą datę i godzinę odczytu lub modyfikacji profilu.

LastUpdatedDate

Pobiera najnowszą datę i godzinę modyfikacji profilu.

Properties

Pobiera kolekcję SettingsProperty obiektów dla każdej właściwości w profilu.

PropertyValues

Pobiera kolekcję wartości właściwości ustawień.

(Odziedziczone po SettingsBase)
Providers

Pobiera kolekcję dostawców ustawień.

(Odziedziczone po SettingsBase)
UserName

Pobiera nazwę użytkownika profilu.

Metody

Create(String)

Używany przez ASP.NET do tworzenia wystąpienia profilu dla określonej nazwy użytkownika.

Create(String, Boolean)

Używany przez ASP.NET do tworzenia wystąpienia profilu dla określonej nazwy użytkownika. Przyjmuje parametr wskazujący, czy użytkownik jest uwierzytelniony, czy anonimowy.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetProfileGroup(String)

Pobiera grupę właściwości zidentyfikowanych przez nazwę grupy.

GetPropertyValue(String)

Pobiera wartość właściwości profilu.

GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
Initialize(SettingsContext, SettingsPropertyCollection, SettingsProviderCollection)

Inicjuje właściwości wewnętrzne używane przez SettingsBase obiekt.

(Odziedziczone po SettingsBase)
Initialize(String, Boolean)

Inicjuje wartości właściwości profilu i informacje dla bieżącego użytkownika.

MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
Save()

Aktualizuje źródło danych profilu przy użyciu zmienionych wartości właściwości profilu.

SetPropertyValue(String, Object)

Ustawia wartość właściwości profilu.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy

Zobacz też