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, установить переменную и все методы обновления.

Как я уже сказал, это обходной путь, который мне бы хотелось решить, но он работает.

Спасибо

Это также невероятно глупо, но в прошлом, когда мне приходилось делать подобные вещи, я просто втиснул дополнительное значение в неиспользуемый параметр, такой как вопрос или ответ для сброса пароля. Хотя я не совсем уверен, как вы справитесь с этим с помощью мастера.

Это некрасиво, но до тех пор, пока оно явно задокументировано (чтобы быть в безопасности, я бы прокомментировал сам метод, а также любое место, на которое вы ссылаетесь), он будет работать нормально.

Это также намного меньше работы, чем создание собственного мастера.

Другие вопросы по тегам