C# asp.net пользовательский метод MembershipUser.createUser(), вызовите его из элемента управления createuserwizard
Я создал пользовательские классы MembershipUser, MembershipProvider и RolePrivoder. Все это работает, и я очень доволен этим, кроме одной вещи. У меня есть дополнительное поле в таблице "Пользователи". У меня есть переопределенный метод для CreateUser(), который принимает дополнительную переменную и помещает ее в БД.
Мои проблемы в том, что я хочу, чтобы это вызывалось из элемента управления мастера создания пользователя. Я настроил элемент управления, чтобы в нем было раскрывающееся меню для заполнения моего дополнительного поля. Я использовал следующий код для хранения этой информации, но я не знаю, как использовать профиль или вызвать свой метод CreateUser:
// Create an empty Profile for the newly created user
ProfileCommon p = (ProfileCommon)ProfileCommon.Create(CreateUserWizard1.UserName, true);
// Populate some Profile properties off of the create user wizard
p.CurrentLevel = Int32.Parse(((DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("clevel")).SelectedValue);
// Save profile - must be done since we explicitly created it
p.Save();
Спасибо за любую помощь
Джон Хокинс
3 ответа
Я думаю, что ваше решение "самое простое", которое вы получите. Вы можете создать своего собственного мастера и вызвать правильный метод, но это намного больше работы.
Единственное, что я могу порекомендовать, - это использовать событие OnCreatedUser.
ссылка: 4гуйсфромролла
Это не ответ, но я нашел обходной путь, все равно хотел бы знать, может ли кто-то ответить на вопрос напрямую...
public void UpdateCurrentLvl_OnDeactivate(object sender, EventArgs e)
{
int level = Int32.Parse(((DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("clevel")).SelectedValue);
MyMembershipUser myUser = (MyMembershipUser)Membership.GetUser(CreateUserWizard1.UserName);
myUser.CurrentLVL = level;
Membership.UpdateUser(myUser);
}
В моем первом CreateUserWizardStep, если поставить метод выше, чтобы включить деактивировать. Поскольку в этот момент он вставил пользователя в БД, я могу вывести пользователя, привести его к моему классу MembershipUser, установить переменную и все методы обновления.
Как я уже сказал, это обходной путь, который мне бы хотелось решить, но он работает.
Спасибо
Это также невероятно глупо, но в прошлом, когда мне приходилось делать подобные вещи, я просто втиснул дополнительное значение в неиспользуемый параметр, такой как вопрос или ответ для сброса пароля. Хотя я не совсем уверен, как вы справитесь с этим с помощью мастера.
Это некрасиво, но до тех пор, пока оно явно задокументировано (чтобы быть в безопасности, я бы прокомментировал сам метод, а также любое место, на которое вы ссылаетесь), он будет работать нормально.
Это также намного меньше работы, чем создание собственного мастера.