ProfileBase Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
- 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) |