ProfileBase Classe

Definição

Fornece acesso não tipado aos valores e informações das propriedades do perfil.

public ref class ProfileBase : System::Configuration::SettingsBase
public class ProfileBase : System.Configuration.SettingsBase
type ProfileBase = class
    inherit SettingsBase
Public Class ProfileBase
Inherits SettingsBase
Herança
ProfileBase
Derivado

Exemplos

O exemplo de código seguinte mostra um ficheiro Web.config que especifica um perfil de utilizador que contém uma ZipCode propriedade de tipo string e uma RecentSearchList propriedade de tipo StringCollection. A propriedade gerada Profile da corrente HttpContext terá acessórios fortemente tipados para cada uma das propriedades especificadas.

<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>

O exemplo seguinte mostra uma página ASP.NET que lê e define a propriedade ZipCode especificada para o perfil do utilizador. Antes de tentar executar este código, defina o fornecedor para o padrão AspNetSqlProvider nas definições de configuração ASP.NET do site.

<%@ 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>

O seguinte exemplo de código define uma classe que herda da ProfileBase classe para criar um perfil personalizado. O tipo do perfil personalizado é especificado no inherits atributo do elemento de configuração do perfil no ficheiro Web.config de uma aplicação.

Importante

Este exemplo contém uma caixa de texto que aceita a entrada do utilizador, o que constitui uma potencial ameaça à segurança. Por defeito, as páginas Web do ASP.NET validam que a entrada do utilizador não inclui elementos de script ou HTML. Para mais informações, consulte Visão Geral dos Exploits de Scripts.

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

Observações

ASP.NET utiliza a classe ProfileBase para criar a classe usada para o perfil de utilizador. Quando uma aplicação que tem o perfil de utilizador ativado é iniciada, ASP.NET cria uma nova classe de tipo ProfileCommon, que herda da classe ProfileBase. Acessórios fortemente tipados são adicionados à ProfileCommon classe para cada propriedade definida na secção de configuração do perfil . Os acessores fortemente tipados da ProfileCommon classe chamam os GetPropertyValue métodos e SetPropertyValue da ProfileBase classe base para recuperar e definir valores das propriedades do perfil, respetivamente. Uma instância da classe ProfileCommon é definida como o valor da propriedade Profile para a aplicação ASP.NET.

Para criar uma instância de um perfil de utilizador numa aplicação ASP.NET, recomenda-se que utilize o método Create.

Notas para Herdeiros

Pode criar uma implementação de perfil personalizada que herde da ProfileBase classe abstrata e defina propriedades para o perfil de utilizador que não estão especificadas no elemento de configuração do perfil . Pode especificar um tipo de perfil de utilizador personalizado no ficheiro web.config com o inherits atributo do elemento de configuração do perfil , como mostrado no exemplo seguinte. O código da EmployeeProfile disciplina está incluído na secção de Exemplos deste tópico.

<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>

Construtores

Name Description
ProfileBase()

Cria uma instância da ProfileBase classe.

Propriedades

Name Description
Context

Recebe o contexto das definições associadas.

(Herdado de SettingsBase)
IsAnonymous

Recebe um valor que indica se o perfil de utilizador é para um utilizador anónimo.

IsDirty

Recebe um valor que indica se alguma das propriedades do perfil foi modificada.

IsSynchronized

Recebe um valor que indica se o acesso ao objeto está sincronizado (thread safe).

(Herdado de SettingsBase)
Item[String]

Obtém ou define um valor de propriedade de perfil indexado pelo nome da propriedade.

LastActivityDate

Obtém a data e hora mais recentes em que o perfil foi lido ou modificado.

LastUpdatedDate

Obtém a data e hora mais recentes em que o perfil foi modificado.

Properties

Obtém uma coleção de SettingsProperty objetos para cada propriedade no perfil.

PropertyValues

Obtém uma coleção de valores de propriedades de definição.

(Herdado de SettingsBase)
Providers

Recebe uma coleção de fornecedores de definições.

(Herdado de SettingsBase)
UserName

Obtém o nome de utilizador do perfil.

Métodos

Name Description
Create(String, Boolean)

Usado pelo ASP.NET para criar uma instância de um perfil para o nome de utilizador especificado. Utiliza um parâmetro que indica se o utilizador é autenticado ou anónimo.

Create(String)

Usado pelo ASP.NET para criar uma instância de um perfil para o nome de utilizador especificado.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetProfileGroup(String)

Obtém um grupo de propriedades identificadas por um nome de grupo.

GetPropertyValue(String)

Obtém o valor de uma propriedade de perfil.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
Initialize(SettingsContext, SettingsPropertyCollection, SettingsProviderCollection)

Inicializa propriedades internas usadas pelo SettingsBase objeto.

(Herdado de SettingsBase)
Initialize(String, Boolean)

Inicializa os valores e informações das propriedades do perfil para o utilizador atual.

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
Save()

Atualiza a fonte de dados do perfil com valores alterados das propriedades do perfil.

SetPropertyValue(String, Object)

Define o valor de uma propriedade de perfil.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Ver também