Поделиться через


ProfileBase Класс

Определение

Предоставляет нетипизированный доступ к значениям и сведениям свойств профиля.

public ref class ProfileBase : System::Configuration::SettingsBase
public class ProfileBase : System.Configuration.SettingsBase
type ProfileBase = class
    inherit SettingsBase
Public Class ProfileBase
Inherits SettingsBase
Наследование
ProfileBase
Производный

Примеры

В следующем примере кода показан файл 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 класс для каждого свойства, определенного в разделе конфигурации профиля . Строго типизированные методы доступа класса вызывают GetPropertyValue и SetPropertyValue методы ProfileCommonProfileBase базового класса для получения и задания значений свойств профиля соответственно. Экземпляр 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, Boolean)

Используется ASP.NET для создания экземпляра профиля для указанного имени пользователя. Принимает параметр, указывающий, прошел ли пользователь проверку подлинности или анонимный.

Create(String)

Используется 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)

Применяется к

См. также раздел