是否有另一种方法可以隐式迁移所有参数?或任何其他优点.
从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); }
或者这是最好/唯一的方式?
解决方法
这是要走的路.但我建议进行推广.您可以循环访问
ProfileBase.Properties集合,而不是对每个属性进行硬编码.这些方面的东西:
var anonymousProfile = Profile.GetProfile(args.AnonymousID); foreach(var property in anonymousProfile.PropertyValues) { Profile.SetPropertyValue(property.Name,property.PropertyValue); }
由于属性组表示为属性名称的一部分(例如“Settings.Theme”表示“设置”组中的“主题”属性),因此上述代码也应与属性组一起使用.