ProfileBase Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет нетипизированный доступ к свойствам профиля и сведениям о нем.
public ref class ProfileBase : System::Configuration::SettingsBase
public class ProfileBase : System.Configuration.SettingsBase
type ProfileBase = class
inherit SettingsBase
Public Class ProfileBase
Inherits SettingsBase
- Наследование
- Производный
Примеры
В следующем примере кода показан файл Web.config, указывающий профиль пользователя, содержащий ZipCode
свойство типа string
и RecentSearchList
свойство типа StringCollection.
Profile Созданное свойство текущего HttpContext объекта будет иметь строго типизированные методы доступа для каждого из указанных свойств.
<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>
В следующем примере показана страница ASP.NET, которая считывает и задает ZipCode
свойство, указанное для профиля пользователя. Перед запуском этого кода задайте поставщику значение по умолчанию AspNetSqlProvider
в параметрах конфигурации ASP.NET для веб-сайта.
<%@ 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>
В следующем примере кода определяется класс, наследующий ProfileBase от класса для создания пользовательского профиля. Тип настраиваемого профиля указывается в атрибуте inherits
элемента конфигурации профиля в файле Web.config для приложения.
Важно!
В этом примере содержится текстовое поле, которое принимает введенные пользователем данные, что является потенциальной угрозой безопасности. По умолчанию данные, вводимые пользователем на веб-страницах ASP.NET, проверяются на наличие скриптов и HTML-элементов. Дополнительные сведения см. в разделе Общие сведения об использовании сценариев.
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
Комментарии
ASP.NET использует ProfileBase класс для создания класса, используемого для профиля пользователя. При запуске приложения с включенным профилем пользователя ASP.NET создает новый класс типа ProfileCommon
, который наследуется от ProfileBase класса . Строго типизированные методы доступа добавляются в ProfileCommon
класс для каждого свойства, определенного в разделе конфигурации профиля . Строго типизированные методы ProfileCommon
доступа класса вызывают GetPropertyValue методы ProfileBase и SetPropertyValue базового класса для получения и задания значений свойств профиля соответственно. Экземпляр ProfileCommon
класса задается в качестве значения Profile свойства для ASP.NET приложения.
Чтобы создать экземпляр профиля пользователя в приложении ASP.NET, рекомендуется использовать Create метод .
Примечания для тех, кто наследует этот метод
Можно создать реализацию пользовательского профиля, которая наследуется от ProfileBase абстрактного класса и определяет свойства профиля пользователя, которые не указаны в элементе конфигурации профиля . Настраиваемый тип профиля пользователя можно указать в файле web.config с inherits
помощью атрибута элемента конфигурации профиля , как показано в следующем примере. Код для EmployeeProfile
класса включен в раздел Пример этого раздела.
<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>
Конструкторы
ProfileBase() |
Создает экземпляр класса ProfileBase. |
Свойства
Context |
Возвращает связанный контекст параметров. (Унаследовано от SettingsBase) |
IsAnonymous |
Получает значение, указывающее, предназначен ли профиль пользователя для анонимного пользователя. |
IsDirty |
Получает значение, указывающее, изменялись ли свойства профиля. |
IsSynchronized |
Возвращает значение, указывающее на то, является ли доступ к объекту синхронизированным (потокобезопасным). (Унаследовано от SettingsBase) |
Item[String] |
Возвращает или задает значение свойства профиля, индексированное по имени свойства |
LastActivityDate |
Получает дату и время последнего считывания или изменения профиля. |
LastUpdatedDate |
Получает дату и время последнего или изменения профиля. |
Properties |
Получает коллекцию объектов SettingsProperty для каждого свойства в профиле. |
PropertyValues |
Возвращает коллекцию значений свойств параметров. (Унаследовано от SettingsBase) |
Providers |
Возвращает коллекцию поставщиков параметров. (Унаследовано от SettingsBase) |
UserName |
Получает имя пользователя для профиля. |
Методы
Create(String) |
Используется ASP.NET для создания экземпляра профиля для заданного имени пользователя. |
Create(String, Boolean) |
Используется ASP.NET для создания экземпляра профиля для заданного имени пользователя. Принимает параметр, указывающий, прошел ли пользователь проверку подлинности или является анонимным пользователем. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetProfileGroup(String) |
Получает группу свойств, обозначенных именем группы. |
GetPropertyValue(String) |
Получает значение свойства профиля. |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
Initialize(SettingsContext, SettingsPropertyCollection, SettingsProviderCollection) |
Инициализирует внутренние свойства, используемые объектом SettingsBase. (Унаследовано от SettingsBase) |
Initialize(String, Boolean) |
Инициализирует значения свойств профиля и сведения о нем для текущего пользователя. |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
Save() |
Обновляет источник данных профиля изменившимися значениями свойств профиля. |
SetPropertyValue(String, Object) |
Задает значение свойства профиля. |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |