ProfileBase Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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
- 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) |