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 proudu HttpContext bude mít pro každou ze zadaných vlastností přístupové objekty silného typu.

<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 stránku ASP.NET, která přeč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 v nastavení konfigurace ASP.NET webu.

<%@ 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 a vytvoří vlastní profil. Typ vlastního profilu je určen v atributu inherits 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 uživatelský vstup neobsahuje skript nebo elementy HTML. Další informace najdete 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žije ProfileBase třídu k vytvoření třídy použité pro profil uživatele. Při spuštění 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 jsou přidány do třídy pro každou vlastnost definovanou v části konfigurace profilu . Objekty ProfileCommon se silnými typy třídy volají GetPropertyValue metody ProfileBase a SetPropertyValue 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.

Pokud chcete vytvořit instanci profilu uživatele v aplikaci ASP.NET, doporučujeme 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 uživatele s atributem inherits elementu konfigurace profilu , jak je znázorněno v následujícím příkladu. Kód pro EmployeeProfile třídu je zahrnut v části Příklad 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

ProfileBase()

Vytvoří instanci objektu ProfileBase třídy.

Vlastnosti

Context

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

(Zděděno od SettingsBase)
IsAnonymous

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

IsDirty

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

IsSynchronized

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

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

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

LastActivityDate

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

LastUpdatedDate

Získá poslední datum a čas, kdy byl profil změněn.

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

Metody

Create(String)

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

Create(String, Boolean)

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

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

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

Slouží jako výchozí hashovací funkce.

(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á aktuální Type instanci.

(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 Objectsouboru .

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