Лучший способ перенести анонимный профиль - PullRequest
8 голосов
/ 02 ноября 2009

Есть ли альтернативный способ переноса всех неявных параметров? Или любые другие преимущества.

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

}

Или это лучший / единственный способ?

Ответы [ 2 ]

8 голосов
/ 14 декабря 2009

Это путь. Но я бы предложил обобщение. Вместо жесткого кодирования каждого свойства вы можете выполнить цикл по коллекции ProfileBase.Properties . Что-то вроде этого:

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

Поскольку группы свойств представлены как часть имен свойств (например, «Settings.Theme» представляет свойство Theme в группе «Настройки»), приведенный выше код также должен работать с группами свойств.

0 голосов
/ 13 декабря 2009

Правильно ли я понял ваш вопрос?

Перенос свойств профиля при входе в систему

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

...