ProfileBase Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce l'accesso non tipizzato ai valori e alle informazioni delle proprietà del profilo.
public ref class ProfileBase : System::Configuration::SettingsBase
public class ProfileBase : System.Configuration.SettingsBase
type ProfileBase = class
inherit SettingsBase
Public Class ProfileBase
Inherits SettingsBase
- Ereditarietà
- Derivato
Esempio
Nell'esempio di codice seguente viene illustrato un file di Web.config che specifica un profilo utente che contiene una ZipCode proprietà di tipo e una RecentSearchList proprietà di tipo stringStringCollection. La proprietà generata dell'oggetto corrente HttpContext avrà funzioni di accesso fortemente tipizzate Profile per ognuna delle proprietà specificate.
<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>
Nell'esempio seguente viene illustrata una pagina ASP.NET che legge e imposta la ZipCode proprietà specificata per il profilo utente. Prima di tentare di eseguire questo codice, impostare il provider sul valore predefinito AspNetSqlProvider nelle impostazioni di configurazione ASP.NET per il sito 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>
Nell'esempio di codice seguente viene definita una classe che eredita dalla ProfileBase classe per creare un profilo personalizzato. Il tipo del profilo personalizzato viene specificato nell'attributo dell'elemento inherits di configurazione del profilo nel file Web.config per un'applicazione.
Importante
Questo esempio contiene una casella di testo che accetta l'input dell'utente, che rappresenta una potenziale minaccia per la sicurezza. Per impostazione predefinita, ASP.NET pagine Web verificare che l'input dell'utente non includa elementi SCRIPT o HTML. Per altre informazioni, vedere Cenni preliminari sugli exploit di script.
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
Commenti
ASP.NET usa la ProfileBase classe per creare la classe usata per il profilo utente. Quando viene avviata un'applicazione con il profilo utente abilitato, ASP.NET crea una nuova classe di tipo ProfileCommon, che eredita dalla ProfileBase classe . Le funzioni di accesso fortemente tipate vengono aggiunte alla ProfileCommon classe per ogni proprietà definita nella sezione di configurazione del profilo . Le funzioni di accesso fortemente tipate della ProfileCommon classe chiamano rispettivamente i GetPropertyValue metodi e SetPropertyValue della ProfileBase classe base per recuperare e impostare i valori delle proprietà del profilo. Un'istanza della ProfileCommon classe viene impostata come valore della Profile proprietà per l'applicazione ASP.NET.
Per creare un'istanza di un profilo utente in un'applicazione ASP.NET, è consigliabile usare il Create metodo .
Note per gli eredi
È possibile creare un'implementazione del profilo personalizzata che eredita dalla ProfileBase classe astratta e definisce le proprietà per il profilo utente non specificato nell'elemento di configurazione del profilo . È possibile specificare un tipo di profilo utente personalizzato nel file web.config con l'attributo dell'elemento inherits di configurazione del profilo , come illustrato nell'esempio seguente. Il codice per la EmployeeProfile classe è incluso nella sezione Esempio di questo argomento.
<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>
Costruttori
| Nome | Descrizione |
|---|---|
| ProfileBase() |
Crea un'istanza della classe ProfileBase. |
Proprietà
| Nome | Descrizione |
|---|---|
| Context |
Ottiene il contesto delle impostazioni associato. (Ereditato da SettingsBase) |
| IsAnonymous |
Ottiene un valore che indica se il profilo utente è destinato a un utente anonimo. |
| IsDirty |
Ottiene un valore che indica se una delle proprietà del profilo è stata modificata. |
| IsSynchronized |
Ottiene un valore che indica se l'accesso all'oggetto è sincronizzato (thread-safe). (Ereditato da SettingsBase) |
| Item[String] |
Ottiene o imposta un valore della proprietà del profilo indicizzato dal nome della proprietà. |
| LastActivityDate |
Ottiene la data e l'ora più recenti di lettura o modifica del profilo. |
| LastUpdatedDate |
Ottiene la data e l'ora più recenti di modifica del profilo. |
| Properties |
Ottiene una raccolta di SettingsProperty oggetti per ogni proprietà nel profilo. |
| PropertyValues |
Ottiene una raccolta di valori delle proprietà delle impostazioni. (Ereditato da SettingsBase) |
| Providers |
Ottiene una raccolta di provider di impostazioni. (Ereditato da SettingsBase) |
| UserName |
Ottiene il nome utente per il profilo. |
Metodi
| Nome | Descrizione |
|---|---|
| Create(String, Boolean) |
Usato da ASP.NET per creare un'istanza di un profilo per il nome utente specificato. Accetta un parametro che indica se l'utente è autenticato o anonimo. |
| Create(String) |
Usato da ASP.NET per creare un'istanza di un profilo per il nome utente specificato. |
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetProfileGroup(String) |
Ottiene un gruppo di proprietà identificate da un nome di gruppo. |
| GetPropertyValue(String) |
Ottiene il valore di una proprietà del profilo. |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| Initialize(SettingsContext, SettingsPropertyCollection, SettingsProviderCollection) |
Inizializza le proprietà interne utilizzate dall'oggetto SettingsBase . (Ereditato da SettingsBase) |
| Initialize(String, Boolean) |
Inizializza i valori e le informazioni delle proprietà del profilo per l'utente corrente. |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| Save() |
Aggiorna l'origine dati del profilo con i valori delle proprietà del profilo modificati. |
| SetPropertyValue(String, Object) |
Imposta il valore di una proprietà del profilo. |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |