2009-09-19 7 views

Répondre

2

Voir this article pour tous les détails. Sachez que dans certains cas (voir mon commentaire à une autre réponse), ProfileCommon n'est pas généré.

Dans ce cas, vous devez revenir à l'utilisation ProfileBase:

ProfileBase profile = context.Profile; 
DateTime dob= profile.GetPropertyValue("dob") as DateTime; 
... 
profile.SetPropertyValue("dob",dob); 
1

Si vous avez un oeil à this article, il explique comment le faire ...

+0

S'il s'agit d'une ** application web ** (pensez à Asp.net MVC) alors ProfileCommon n'est pas généré automatiquement et vous devez revenir à la ProfileBase non-safe – spender

3

Lorsque vous êtes dans la page que 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"); 
2

Si ce que vous essayez de faire est de mettre à jour le profil d'un autre utilisateur (par exemple, vous êtes un administrateur qui saisit le nom d'utilisateur d'un client), vous pouvez utiliser quelque chose comme le suivant.

Dim p As ProfileCommon = Profile.GetProfile("Usr1") 

p.TestValue1 = "New Value" 
p.TestValue2 = "Another New Value" 

p.Save() 

Encore une fois, si vous utilisez un projet Web au lieu d'un site Web, vous devrez utiliser p.SetPropertyValue() au lieu des noms de propriétés fortement typé.

-1

J'ai un problème similaire et recherche de solution avec le script sql. C'est un peu plus difficile mais c'est faisable dans le cas où le code côté serveur n'est pas une option. I défini deux champs dans dbo.aspnet_Profile (PropertyValuesString, PropertyNames)

UPDATE dbo.aspnet_Profile 
SET 
PropertyValuesString = cast(Replace(cast(PropertyValuesString as nvarchar(max)),'New Value','Old Value') as ntext) 
,PropertyNames='New calculated property names' 
WHERE 
UserId='userID' 

partie difficile est de changer PropertyNames field.It contient propriété de nom de profil, la position de départ, et la longueur. Quelque chose comme ça: adresse: S: 31: 12 Vous devez recalculer les positions de départ et les longueurs en conséquence nouvelle valeur.

Questions connexes