Sdílet prostřednictvím


ProfileBase Třída

Definice

Poskytuje netypový přístup k hodnotám a informacím vlastností profilu.

public ref class ProfileBase : System::Configuration::SettingsBase
public class ProfileBase : System.Configuration.SettingsBase
type ProfileBase = class
    inherit SettingsBase
Public Class ProfileBase
Inherits SettingsBase
Dědičnost
ProfileBase
Odvozené

Příklady

Následující příklad kódu ukazuje Web.config soubor, který určuje profil uživatele, který obsahuje ZipCode vlastnost typu string a RecentSearchList vlastnost typu StringCollection. Vygenerovaná Profile vlastnost aktuálního HttpContext objektu bude mít přístupové objekty silného typu pro každou ze zadaných vlastností.

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

Následující příklad ukazuje ASP.NET stránku, která čte a nastaví vlastnost zadanou ZipCode pro profil uživatele. Před pokusem o spuštění tohoto kódu nastavte zprostředkovatele na výchozí AspNetSqlProvider hodnotu v nastavení konfigurace ASP.NET pro 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>

Následující příklad kódu definuje třídu, která dědí z ProfileBase třídy k vytvoření vlastního profilu. Typ vlastního profilu je určen v inherits atributu elementu konfigurace profilu v souboru Web.config pro aplikaci.

Důležité

Tento příklad obsahuje textové pole, které přijímá vstup uživatele, což je potenciální bezpečnostní hrozba. Ve výchozím nastavení ASP.NET webové stránky ověřují, že vstup uživatele neobsahuje skripty ani elementy HTML. Další informace naleznete v tématu Přehled zneužití skriptů.

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

Poznámky

ASP.NET používá ProfileBase třídu k vytvoření třídy použité pro profil uživatele. Když je spuštěna aplikace s povoleným profilem uživatele, ASP.NET vytvoří novou třídu typu ProfileCommon, která dědí z ProfileBase třídy. Přístupové objekty silného ProfileCommon typu se přidají do třídy pro každou vlastnost definovanou v oddílu konfigurace profilu . Přístupové objekty třídy silného ProfileCommonProfileBase typu volají GetPropertyValue a SetPropertyValue metody základní třídy k načtení a nastavení hodnot vlastností profilu v uvedeném pořadí. Instance ProfileCommon třídy je nastavena jako hodnota Profile vlastnosti pro ASP.NET aplikace.

K vytvoření instance profilu uživatele v aplikaci ASP.NET se doporučuje použít metodu Create .

Poznámky pro dědice

Můžete vytvořit vlastní implementaci profilu, která dědí z ProfileBase abstraktní třídy a definuje vlastnosti profilu uživatele, které nejsou zadány v elementu konfigurace profilu . V souboru web.config můžete zadat vlastní typ profilu s inherits atributem elementu konfigurace profilu , jak je znázorněno v následujícím příkladu. Kód pro EmployeeProfile třídu je součástí ukázkové části tohoto tématu.

<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

Name Description
ProfileBase()

Vytvoří instanci objektu ProfileBase třídy.

Vlastnosti

Name Description
Context

Získá přidružený kontext nastavení.

(Zděděno od SettingsBase)
IsAnonymous

Získá hodnotu určující, zda je profil uživatele pro anonymního uživatele.

IsDirty

Získá hodnotu určující, zda některé vlastnosti profilu byly změněny.

IsSynchronized

Získá hodnotu označující, zda je přístup k objektu synchronizován (bezpečné vlákno).

(Zděděno od SettingsBase)
Item[String]

Získá nebo nastaví hodnotu vlastnosti profilu indexované podle názvu vlastnosti.

LastActivityDate

Získá nejnovější datum a čas, kdy byl profil přečten nebo změněn.

LastUpdatedDate

Získá nejnovější datum a čas změny profilu.

Properties

Získá kolekci SettingsProperty objektů pro každou vlastnost v profilu.

PropertyValues

Získá kolekci hodnot vlastností nastavení.

(Zděděno od SettingsBase)
Providers

Získá kolekci zprostředkovatelů nastavení.

(Zděděno od SettingsBase)
UserName

Získá uživatelské jméno pro profil.

Metody

Name Description
Create(String, Boolean)

Používá ASP.NET k vytvoření instance profilu pro zadané uživatelské jméno. Přebírá parametr určující, jestli je uživatel ověřený nebo anonymní.

Create(String)

Používá ASP.NET k vytvoření instance profilu pro zadané uživatelské jméno.

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetProfileGroup(String)

Získá skupinu vlastností identifikovaných názvem skupiny.

GetPropertyValue(String)

Získá hodnotu vlastnosti profilu.

GetType()

Získá Type aktuální instance.

(Zděděno od Object)
Initialize(SettingsContext, SettingsPropertyCollection, SettingsProviderCollection)

Inicializuje interní vlastnosti používané objektem SettingsBase .

(Zděděno od SettingsBase)
Initialize(String, Boolean)

Inicializuje hodnoty vlastností profilu a informace pro aktuálního uživatele.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
Save()

Aktualizuje zdroj dat profilu se změněnými hodnotami vlastností profilu.

SetPropertyValue(String, Object)

Nastaví hodnotu vlastnosti profilu.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro

Viz také