2009-11-02 16 views
8

Existe-t-il un moyen alternatif de migrer tous les paramètres implicites? Ou d'autres avantages.Meilleure façon de migrer le profil anonyme

De MSDN:

public void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs args) 
{ 
    ProfileCommon anonymousProfile = Profile.GetProfile(args.AnonymousID); 

    Profile.ZipCode = anonymousProfile.ZipCode; 
    Profile.CityAndState = anonymousProfile.CityAndState; 
    Profile.StockSymbols = anonymousProfile.StockSymbols; 

    //////// 
    // Delete the anonymous profile. If the anonymous ID is not 
    // needed in the rest of the site, remove the anonymous cookie. 

    ProfileManager.DeleteProfile(args.AnonymousID); 
    AnonymousIdentificationModule.ClearAnonymousIdentifier(); 

    // Delete the user row that was created for the anonymous user. 
    Membership.DeleteUser(args.AnonymousID, true); 

} 

Ou est-ce le meilleur/seule façon?

Répondre

8

Ceci est le chemin à parcourir. Mais je suggérerais une généralisation. Au lieu de coder en dur chaque propriété, vous pouvez parcourir la collection ProfileBase.Properties. Quelque chose le long de ces lignes:

var anonymousProfile = Profile.GetProfile(args.AnonymousID); 
foreach(var property in anonymousProfile.PropertyValues) 
{ 
    Profile.SetPropertyValue(property.Name, property.PropertyValue); 
} 

Puisque les groupes de propriété sont représentés dans le cadre des noms de propriété (par exemple « Settings.Theme » représente la propriété thématique au sein du groupe Paramètres) le code ci-dessus devrait également travailler avec des groupes de propriété.

+0

Serait-ce aussi prendre des groupes de propriétés? –