是否有另一种方法可以隐式迁移所有参数?或任何其他优点.
从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”表示“设置”组中的“主题”属性),因此上述代码也应与属性组一起使用.