Лучший способ перенести анонимный профиль
Есть ли альтернативный способ, который переносит все параметры неявно? Или любые другие преимущества.
Из 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 ответа
Решение
Это путь. Но я бы предложил обобщение. Вместо жесткого кодирования каждого свойства вы можете циклически проходить по коллекции ProfileBase.Properties. Что-то вроде этого:
var anonymousProfile = Profile.GetProfile(args.AnonymousID);
foreach(var property in anonymousProfile.PropertyValues)
{
Profile.SetPropertyValue(property.Name, property.PropertyValue);
}
Поскольку группы свойств представлены как часть имен свойств (например, "Settings.Theme" представляет свойство Theme в группе "Настройки"), приведенный выше код также должен работать с группами свойств.
Правильно ли я понял ваш вопрос?
Перенос свойств профиля при входе в систему