Compartir a través de


ProfileBase Clase

Definición

Proporciona acceso sin tipo a la información y los valores de propiedad 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
Herencia
ProfileBase
Derivado

Ejemplos

En el ejemplo de código siguiente se muestra un archivo Web.config que especifica un perfil de usuario que contiene una ZipCode propiedad de tipo string y una RecentSearchList propiedad de tipo StringCollection. La propiedad generada Profile del actual HttpContext tendrá descriptores de acceso fuertemente tipados para cada una de las propiedades 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>

En el ejemplo siguiente se muestra una página de ASP.NET que lee y establece la ZipCode propiedad especificada para el perfil de usuario. Antes de intentar ejecutar este código, establezca el proveedor en el valor predeterminado AspNetSqlProvider en los valores de configuración de ASP.NET para el sitio web.

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

En el ejemplo de código siguiente se define una clase que hereda de la ProfileBase clase para crear un perfil personalizado. El tipo del perfil personalizado se especifica en el inherits atributo del elemento de configuración de perfil en el archivo Web.config para una aplicación.

Importante

Este ejemplo contiene un cuadro de texto que acepta la entrada del usuario, que es una amenaza de seguridad potencial. De forma predeterminada, ASP.NET Web Pages valida que los datos proporcionados por el usuario no incluyen elementos HTML ni de script. Para más información, consulte Información general sobre los ataques mediante 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

Comentarios

ASP.NET usa la ProfileBase clase para crear la clase usada para el perfil de usuario. Cuando se inicia una aplicación que tiene habilitado el perfil de usuario, ASP.NET crea una nueva clase de tipo ProfileCommon, que hereda de la ProfileBase clase . Los descriptores de acceso fuertemente tipados se agregan a la ProfileCommon clase para cada propiedad definida en la sección de configuración del perfil . Los descriptores de acceso fuertemente tipados de la ProfileCommon clase llaman a los GetPropertyValue métodos y SetPropertyValue de la ProfileBase clase base para recuperar y establecer valores de propiedad de perfil, respectivamente. Una instancia de la ProfileCommon clase se establece como el valor de la Profile propiedad para la aplicación ASP.NET.

Para crear una instancia de un perfil de usuario en una aplicación de ASP.NET, se recomienda usar el Create método .

Notas a los desarrolladores de herederos

Puede crear una implementación de perfil personalizada que herede de la ProfileBase clase abstracta y defina las propiedades del perfil de usuario que no se especifican en el elemento de configuración del perfil . Puede especificar un tipo de perfil de usuario personalizado en el archivo web.config con el inherits atributo del elemento de configuración de perfil , como se muestra en el ejemplo siguiente. El código de la EmployeeProfile clase se incluye en la sección Ejemplo de este tema.

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

Constructores

ProfileBase()

Crea una instancia de la clase ProfileBase.

Propiedades

Context

Obtiene el contexto de configuración asociado.

(Heredado de SettingsBase)
IsAnonymous

Obtiene un valor que indica si el perfil de usuario es para un usuario anónimo.

IsDirty

Obtiene un valor que indica si se ha modificado alguna de las propiedades de perfil.

IsSynchronized

Obtiene un valor que indica si el acceso al objeto está sincronizado (es seguro para la ejecución de subprocesos).

(Heredado de SettingsBase)
Item[String]

Obtiene o establece un valor de propiedad de perfil indizado por el nombre de propiedad.

LastActivityDate

Obtiene la fecha y hora más reciente en que se leyó o modificó el perfil.

LastUpdatedDate

Obtiene la fecha y hora más reciente en que se modificó el perfil.

Properties

Obtiene una colección de objetos SettingsProperty para cada propiedad del perfil.

PropertyValues

Obtiene una colección de valores de propiedad de configuración.

(Heredado de SettingsBase)
Providers

Obtiene una colección de proveedores de configuración.

(Heredado de SettingsBase)
UserName

Obtiene el nombre de usuario del perfil.

Métodos

Create(String)

ASP.NET lo utiliza para crear una instancia de un perfil para el nombre de usuario especificado.

Create(String, Boolean)

ASP.NET lo utiliza para crear una instancia de un perfil para el nombre de usuario especificado. Toma un parámetro que indica si el usuario es un usuario autenticado o anónimo.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetProfileGroup(String)

Obtiene un grupo de propiedades identificadas por un nombre de grupo.

GetPropertyValue(String)

Obtiene el valor de una propiedad de perfil.

GetType()

Obtiene el Type de la instancia actual.

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

Inicializa las propiedades internas que utiliza el objeto SettingsBase.

(Heredado de SettingsBase)
Initialize(String, Boolean)

Inicializa la información y los valores de propiedad de perfil para el usuario actual.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
Save()

Actualiza el origen de datos del perfil con los valores de propiedad de perfil cambiados.

SetPropertyValue(String, Object)

Establece el valor de una propiedad de perfil.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a

Consulte también