Partager via


Définition des propriétés de profil ASP.NET

Mise à jour : novembre 2007

La fonctionnalité de profil ASP.NET vous permet de stocker des valeurs simples (scalaires), des collections et d'autres types complexes, ainsi que des types définis par l'utilisateur.

Informations sur les définitions de propriétés

Lorsque vous définissez une propriété dans le profil, vous spécifiez un nom qui vous servira à faire référence à la propriété. Par exemple, si vous souhaitez stocker un code postal, vous pouvez nommer la propriété PostalCode, puis obtenir et définir sa valeur sous la forme Profile.PostalCode.

Vous pouvez, de façon facultative, définir les caractéristiques supplémentaires suivantes pour chaque propriété :

  • type   Définit le type de la propriété. La valeur par défaut est String. Vous pouvez spécifier n'importe quelle classe .NET comme type (Int32, DateTime, StringCollection, et ainsi de suite). Si le type n'est pas défini dans le .NET Framework, vous devez vérifier que votre application Web a accès au type. Vous pouvez inclure l'assembly compilé du type dans le répertoire bin du site Web ou dans le Global Assembly Cache (GAC), ou encore placer le code source du type dans le répertoire App_Code du site Web.

  • serializeAs   Spécifie le formateur de sérialisation (chaîne, binaire, XML ou sérialisation spécifique au fournisseur). Pour plus d'informations, consultez Sérialisation. La valeur de sérialisation par défaut est string.

  • allowAnonymous   Spécifie une valeur booléenne qui indique si la propriété est gérée pour les utilisateurs anonymes. Par défaut, cette valeur est false. Si vous souhaitez que la propriété soit disponible pour des utilisateurs non authentifiés, vous pouvez lui attribuer la valeur true.

  • defaultValue   Spécifie une valeur avec laquelle la propriété est initialisée.

  • readOnly   Spécifie une valeur booléenne qui indique si la propriété peut être modifiée.

  • provider   Spécifie un fournisseur spécifique à la propriété. Par défaut, toutes les propriétés sont gérées à l'aide du fournisseur par défaut spécifié pour les propriétés de profil, mais certaines propriétés peuvent également utiliser des fournisseurs différents.

  • customProviderData   Spécifie une chaîne facultative contenant des informations personnalisées passées au fournisseur de profils. Certains fournisseurs peuvent mettre en place une logique personnalisée pour utiliser ces données.

En outre, les propriétés de profil peuvent être organisées sous la forme de groupes de propriétés à l'aide de l'élément de configuration group, dont il est question plus loin dans cette rubrique.

Utilisation de valeurs scalaires

Stocker des valeurs scalaires, telles que des chaînes, des valeurs numériques ou des valeurs DateTime dans un profil ne requiert qu'une configuration minime. Vous devez fournir un nom et le type. Le système de profil convertira la valeur du type spécifié en une chaîne, et vice-versa, conformément aux besoins de stockage. Lorsque vous accéderez à la propriété via la propriété Profile, elle aura le type correct.

Par exemple, si vous souhaitez stocker le nom, le poids et la date de naissance de l'utilisateur, vous pouvez définir une propriété appelée Name, de type String, un autre nommée Weight, de type Int32, et une troisième nommée BirthDate, de type DateTime. Dans le fichier de configuration, les définitions de propriété ressembleront à ceci :

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

Pour la propriété Name, vous n'avez pas besoin de spécifier explicitement un type, puisqu'elle est de type String, qui est la valeur par défaut. Pour tout autre type, vous devrez fournir une référence de type complète.

Lorsque vous obtenez ou définissez les valeurs d'une propriété, vous devez utiliser le type approprié dans votre code. L'exemple de code suivant montre comment utiliser la propriété BirthDate :

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

Utilisation de types de propriétés complexes

Dans les profils utilisateur, vous pouvez également stocker des types complexes, par exemple des collections. Pour les types complexes, vous devez fournir des informations sur la manière de sérialiser le type afin que le système de profil puisse obtenir et définir la valeur de propriété comme étant le type approprié.

L'exemple suivant montre la définition de propriété d'une valeur dont le type est une collection :

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

Pour définir une propriété de ce type, vous pouvez utiliser un exemple de code comme celui-ci :

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

Utilisation de types de propriétés définis par l'utilisateur

Vous pouvez également stocker et utiliser des valeurs de propriétés de profil qui sont des instances de classes que vous créez vous-même. La classe que vous créez doit prendre en charge la sérialisation pour les membres que vous souhaitez stocker dans le profil utilisateur.

L'exemple de code suivant montre une classe ShoppingCart simple qui tient à jour une collection d'éléments Cart, lesquels stockent ensuite un identificateur d'articles, avec leur nom et leur coût :

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

Pour configurer le profil utilisateur de manière à utiliser des instances de magasin de cette classe, ajoutez la section suivante au fichier Web.config de l'application :

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

Pour stocker les données de type personnalisé dans le profil utilisateur, créez une instance du type personnalisé comme vous le feriez dans n'importe quelle application, puis assignez-la à la propriété de profil que vous avez définie pour ce type. L'exemple de code suivant montre comment utiliser une propriété de profil créée sous forme de type personnalisé :

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;

Utilisation de groupes de propriétés

Les propriétés peuvent être organisées dans le profil utilisateur sous forme de groupes de propriétés. Les groupes de propriétés de profil sont spécifiés à l'aide de l'élément de configuration group. Par exemple, les diverses propriétés des informations d'adresse utilisateur peuvent être rassemblées dans un groupe Address. Vous pouvez ensuite accéder aux propriétés groupées à l'aide de l'identificateur de groupe et du nom de la propriété (par exemple, Profile.Address.Street ou Profile.Address.City). L'exemple suivant montre une configuration de propriété de profil qui organise certaines propriétés dans un groupe.

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

Voir aussi

Concepts

Vue d'ensemble des propriétés du profil ASP.NET

Fournisseurs de profils ASP.NET