ProfileBase Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
- 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) |