8

是否有其他方法可以隐式迁移所有参数?或任何其他优点。

来自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);

}

或者这是最好/唯一的方法?

4

2 回答 2

8

这是要走的路。但我会建议一个概括。您可以遍历ProfileBase.Properties集合,而不是对每个属性进行硬编码。这些方面的东西:

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

由于属性组被表示为属性名称的一部分(例如,“Settings.Theme”表示设置组中的主题属性),上述代码也应该与属性组一起使用。

于 2009-12-14T09:28:41.093 回答
0

我是否正确理解了您的问题?

在登录期间迁移配置文件属性

http://msdn.microsoft.com/en-us/library/taab950e.aspx

于 2009-12-13T01:24:59.013 回答