Partilhar via


Definir propriedades de perfil ASP.NET

O recurso de perfil do ASP.NET permite que você armazene valores (escalares) simples, coleções e outros tipos complexos e tipos definidos pelo usuário.

Informação de Definição de Propriedade

Quando você define uma propriedade no perfil, especifique um nome que você irá usar para se referir à propriedade.Por exemplo, se você desejar armazenar um código postal, você pode nomear a propriedade PostalCode e, em seguida, você pode obter e definir o valor da propriedade como Profile.PostalCode.

Opcionalmente, você pode definir as seguintes características adicionais para cada propriedade:

  • type   Especifica o tipo de propriedade.O padrão é String.Você pode especificar qualquer classe .NET como o tipo (Int32, DateTime, StringCollection, e assim por diante).Se o tipo não está definido no .NET Framework, você deve garantir que seu aplicativo da Web tenha acesso para o tipo.Você pode incluir o tipo do conjunto de módulos (assembly) compilado no diretório Bin do site ou na cache global de assemblies (GAC), ou você pode colocar o código-fonte para o tipo no diretório App_Code do site.

  • serializeAs   Especifica o formatador de serialização (sequência de caracteres, binário, XML, ou serialização específica do provedor).Para obter detalhes, consulte:Série.A serialização padrão é em sequência de caracteres.

  • allowAnonymous   Especifica um valor Boolean que indica se a propriedade é gerenciada por usuários anônimos.Por padrão, isso é false.Se você deseja que a propriedade esteja disponível para usuários não autenticados, você pode definir a propriedade como true.

  • defaultValue   Especifica um valor com que a propriedade é inicializada.

  • readOnly   Especifica um valor Boolean que indica se a propriedade pode ser modificada.

  • provider   Especifica um provedor específico para a propriedade.Por padrão, todas as propriedades são gerenciadas usando o provedor padrão especificado para propriedades de perfil, mas as propriedades individuais também podem usar diferentes provedores.

  • customProviderData   Especifica uma sequência opcional contendo informações personalizadas que são passadas para o provedor de perfil.Provedores individuais podem implementar lógica personalizada para usar esses dados.

Além disso, as propriedades do perfil podem ser organizadas como grupos de propriedades usando o elemento de configuração de grupo, que é abordado posteriormente neste tópico.

Trabalhando com Valores Escalares

Armazenar valores escalares, como sequências de caracteres, valores numéricos ou valores DateTime em um perfil requer somente configuração mínima.Você deve fornecer um nome e o tipo.O sistema de perfil converterá o valor do tipo especificado para uma sequência de caracteres e volta conforme necessário para armazenamento.Quando você acessa a propriedade através da propriedade Profile, ele será digitado automaticamente de forma apropriada.

Por exemplo, se você deseja armazenar o nome do usuário, peso e a data de nascimento, você pode definir uma propriedade chamada Name do tipo String, outro chamado Weight que é do tipo Int32 e um terceiro chamado BirthDate, do tipo DateTime.No arquivo de configuração, as definições de propriedade terão a seguinte aparência:

<profile defaultProvider="AspNetSqlProfileProvider">
  <properties>
     <add name="Name" />     <add name="Weight" type="System.Int32" />     <add name="BirthDate"           type="System.DateTime" />
  </properties>
</profile>

Para a propriedade Name, você não precisará especificar explicitamente um tipo, pois a propriedade é do tipo String, o padrão.Para qualquer outro tipo, você deve fornecer uma referência de tipo totalmente qualificada.

Quando você obter ou definir os valores de propriedade, você precisará trabalhar com o tipo apropriado no seu código.O exemplo de código a seguir mostra como trabalhar com a propriedade BirthDate:

Dim bday As DateTime = Profile.BirthDate
DateTime bday = Profile.BirthDate;

Trabalhando com Tipos Complexos da Propriedade

Você também pode armazenar tipos complexos, como coleções, em perfis de usuário.Para tipos complexos, você deve fornecer informações sobre como o tipo deve ser serializado para que o sistema de perfil posa obter e definir o valor da propriedade como o tipo apropriado.

O exemplo a seguir mostra uma definição de propriedade para um valor tipado como uma coleção:

<profile defaultProvider="AspNetSqlProfileProvider">
  <properties>
    <add name="FavoriteURLs"       type="System.Collections.Specialized.StringCollection"      serializeAs="Xml" />
  </properties>
</profile>

Para definir uma propriedade desse tipo, você pode usar um código como o seguinte:

Dim favorites As System.Collections.Specialized.StringCollection
favorites = Profile.FavoriteURLs
System.Collections.Specialized.StringCollection favorites;
favorites = Profile.FavoriteURLs;

Trabalhando com Tipos de Propriedades Definidos pelo Usuário

Você também pode armazenar e usar valores de propriedades de perfil que sejam instâncias de classes que você mesmo criar.A classe que você cria deve oferece suporte para serialização para os membros que você deseja armazenar no perfil de usuário.

O exemplo de código a seguir ilustra uma classe ShoppingCart simples que mantém uma coleção de itens Cart que por sua vez armazenam um item identificador, nome e custo:

Namespace Samples.AspNet.Profile
    <Serializable()> _
    Public Class ShoppingCart 
        Public Created As DateTime 
        Public LastUpdated As DateTime 
        Public CartItems As Dictionary(Of String, CartItem) = _
            New Dictionary(Of String, CartItem)()
    End Class

    <Serializable()> _
    Public Class CartItem 
        Public Sub New(itemId As Integer, itemName As String, _
            itemCost As Double)
          ID = itemId
          Name = itemName
          Cost = itemCost
        End Sub

        Dim ID As Integer
        Dim Name As String
        Dim Cost As Double
    End Class
End Namespace
namespace Samples.AspNet.Profile 
{
    [Serializable]
    public class ShoppingCart {
        public DateTime Created;
        public DateTime LastUpdated;
        public Dictionary<string, CartItem> CartItems = new Dictionary<string, CartItem>();
    }

    [Serializable]
    public class CartItem {
        public CartItem(int itemId, string itemName, double itemCost)
        {
          ID = itemId;
          Name = itemName;
          Cost = itemCost;
        }

        int ID;
        string Name;
        double Cost;
    }
}

Para configurar o perfil de usuário para usar armazenamento de instâncias da classe, adicione a seção a seguir ao arquivo web.config do aplicativo:

<profile defaultProvider="AspNetSqlProfileProvider">
  <properties>
    <add name="MyCart"       type="Samples.AspNet.Profile.ShoppingCart"       serializeAs="Binary" />
  </properties>
</profile>

Para armazenar os tipos de dados personalizados no perfil de usuário, crie uma instância do tipo personalizado como você faria em qualquer aplicativo e, então, atribua para a propriedade de perfil que é definido para esse tipo.O exemplo de código a seguir mostra como trabalhar com uma propriedade de perfil criada como um tipo personalizado:

Dim bookCart As ShoppingCart = New ShoppingCart()
bookCart.CartItems.Add("Contoso", _
    New CartItem(37843, "Widget", 49.99))
bookCart.CartItems.Add("Microsoft", _
    New CartItem(39232, "Software", 49.99))
Profile.MyCart = bookCart
ShoppingCart bookCart = new ShoppingCart();
bookCart.CartItems.Add("Contoso", new CartItem(37843, "Widget", 49.99));
bookCart.CartItems.Add("Microsoft", new 
    CartItem(39232, "Software", 49.99));
Profile.MyCart = bookCart;

Trabalhando com Grupos de Propriedade

As propriedades podem ser organizadas no perfil de usuário como grupos de propriedades.Grupos de propriedades de perfil são especificados usando o elemento de configuração de grupo.Por exemplo, as propriedades diferentes de informações de endereço do usuário podem ser agrupadas em um grupo Address.Você poderá, então, acessar as propriedades agrupadas usando o identificador de grupo e o nome da propriedade (por exemplo, Profile.Address.Street ou Profile.Address.City).O exemplo a seguir mostra uma configuração de propriedades do perfil que organiza algumas propriedades em um grupo.

<profile enabled="true">
  <properties>
    <add name="PostalCode" />
    <group name="Address">      <add name="Street" />      <add name="City" />      <add name="CountryOrRegion" />    </group>
  </properties>
</profile>

Consulte também

Conceitos

Visão geral sobre propriedades de perfil do ASP.NET

Provedores de perfil ASP.NET