2009-11-02 7 views
8

Esiste un modo alternativo per la migrazione di tutti i parametri impliciti? O altri vantaggi.Il modo migliore per migrare il profilo anonimo

Da 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); 

} 

O è questo il miglior unico modo /?

risposta

8

Questa è la strada da percorrere. Ma suggerirei una generalizzazione. Invece di codificare manualmente ciascuna proprietà, è possibile scorrere la raccolta ProfileBase.Properties. Qualcosa in queste righe:

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

Poiché le proprietà sono rappresentati come parte dei nomi di proprietà (ad esempio "Settings.Theme" rappresenta la proprietà Tema all'interno del gruppo Impostazioni) il codice sopra dovrebbe funzionare anche con gruppi di proprietà.

+0

Questo porterebbe anche a gruppi di proprietà? –

Problemi correlati