ProfileBase Classe

Definição

Fornece acesso sem tipo para informações e valores de propriedade de 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 a seguir mostra um arquivo Web.config que especifica um perfil de usuário que contém uma ZipCode propriedade do tipo string e uma RecentSearchList propriedade do tipo StringCollection. A propriedade gerada Profile do atual HttpContext terá acessadores 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 a seguir mostra uma página ASP.NET que lê e define a ZipCode propriedade especificada para o perfil de usuário. Antes de tentar executar esse código, defina o provedor como o padrão AspNetSqlProvider nas configurações de ASP.NET para o 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 exemplo de código a seguir 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 de perfil no arquivo Web.config para um aplicativo.

Importante

Este exemplo contém uma caixa de texto que aceita a entrada do usuário, que é uma ameaça à segurança em potencial. Por padrão, ASP.NET páginas da Web validam que a entrada do usuário não inclui elementos HTML ou script. Para obter mais informações, consulte Visão geral de explorações de 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

Comentários

ASP.NET usa a ProfileBase classe para criar a classe usada para o perfil do usuário. Quando um aplicativo que tem o perfil de usuário habilitado é iniciado, ASP.NET cria uma nova classe de tipoProfileCommon, que herda da ProfileBase classe. Acessadores fortemente tipados são adicionados à ProfileCommon classe para cada propriedade definida na seção de configuração de perfil . Os acessadores fortemente tipado da ProfileCommon classe chamam os métodos e SetPropertyValue a GetPropertyValue ProfileBase classe base para recuperar e definir valores de propriedade de perfil, respectivamente. Uma instância da ProfileCommon classe é definida como o valor da Profile propriedade para o aplicativo ASP.NET.

Para criar uma instância de um perfil de usuário em um aplicativo ASP.NET, é recomendável que você use o Create método.

Notas aos Herdeiros

Você pode criar uma implementação de perfil personalizado que herda da ProfileBase classe abstrata e define propriedades para o perfil de usuário que não são especificadas no elemento de configuração de perfil . Você pode especificar um tipo de perfil de usuário personalizado no arquivo web.config com o inherits atributo do elemento de configuração de perfil , conforme mostrado no exemplo a seguir. O código da EmployeeProfile classe está incluído na seção Exemplo 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

ProfileBase()

Cria uma instância de ProfileBase classe.

Propriedades

Context

Obtém o contexto de configurações associado.

(Herdado de SettingsBase)
IsAnonymous

Obtém um valor que indica se o perfil do usuário é para um usuário anônimo.

IsDirty

Obtém um valor que indica se qualquer uma das propriedades de perfil foi modificada.

IsSynchronized

Obtém um valor que indica se o acesso ao objeto é sincronizado (thread-safe).

(Herdado de SettingsBase)
Item[String]

Obtém ou define um valor da 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 objetos SettingsProperty para cada propriedade no perfil.

PropertyValues

Obtém uma coleção de valores da propriedade de configurações.

(Herdado de SettingsBase)
Providers

Obtém uma coleção de provedores de configurações.

(Herdado de SettingsBase)
UserName

Obtém o nome de usuário do perfil.

Métodos

Create(String)

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

Create(String, Boolean)

Usado pelo ASP.NET para criar uma instância de um perfil para o nome de usuário especificado. Aceita um parâmetro que indica se o usuário é autenticado ou anônimo.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetProfileGroup(String)

Obtém um grupo de propriedades identificado 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 as propriedades internas usadas pelo objeto SettingsBase.

(Herdado de SettingsBase)
Initialize(String, Boolean)

Inicializa os valores de propriedade de perfil e informações para o usuário atual.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
Save()

Atualiza a fonte de dados de perfil com valores de propriedade de perfil alterados.

SetPropertyValue(String, Object)

Define o valor de uma propriedade de perfil.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Confira também