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>