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