2009-10-20 10 views
1

Je crée une classe de base à partir de laquelle des pages spécifiques vont être dérivées. En d'autres termes, au lieu d'hériter mes pages de System.Web.UI.Page, elles héritent de MyPage (qui à son tour hérite de System.Web.UI.Page).Accès aux profils asp.net depuis App_Code

Cependant, je n'arrive pas à accéder à la propriété Profile. Même s'ils héritent tous les deux de la page, je ne peux accéder aux propriétés du profil que si je suis au niveau de la page.

Je suis sûr que c'est juste mon incompréhension du cycle de vie de la page, mais est-il un moyen d'accéder au profil de ma classe personnalisée qui est définie dans App_Code?

Répondre

2

Lorsque vous êtes dans la page, vous avez la classe ProfileCommon à votre disposition pour accéder au profil. La classe profilecommon est automatiquement générée par asp.net à partir de vos paramètres de profil web.config lors de la compilation du projet web. Si vous souhaitez utiliser le profil du dossier app_code, vous devrez utiliser la classe profilebase. Profilecommon qui est disponible dans la page dérive également de cette classe.

ProfileBase peut être accès comme celui-ci

HttpContext.Profile or HttpContext.Current.Profile 

Pour lire une valeur de profil que vous devez faire la

suivante
HttpContext.Profile.GetPropertyValue("propertyName"); 

Pour écrire une valeur au profil vous devez écrire

HttpContext.Profile.SetPropertyValue("propertyName", "propertyValue"); 
0

Vous pouvez accéder aux propriétés de profil fortement typées en les convertissant en ProfileCommon tapez comme ceci:

Dim Profile as ProfileCommon = CType(HttpContext.Current.Profile, ProfileCommon) 

Profile.MyProperty1 = "Testing" 
Profile.MyProperty2 = "Cool" 
0

Si vous souhaitez récupérer les valeurs de propriété profil pour un autre utilisateur (par opposition à celui qui est actif) cela fonctionne:

Dim theUser As MembershipUser = Membership.GetUser(userID) 
Dim theUserProfile As ProfileBase = ProfileBase.Create(theUser.UserName, True) 
Dim theProperty As String = theUserProfile.GetPropertyValue("Property") 

Vous utiliseriez ProfileCommon dans le code derrière mais n'est pas disponible dans App_Code.

Referné par: MSDN

Questions connexes