C # asp.net пользовательский метод MembershipUser.createUser (), вызвать его из элемента управления createuserwizard - PullRequest
1 голос
/ 28 января 2009

Я создал пользовательские классы 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 ]

2 голосов
/ 28 января 2009

Я думаю, что ваше решение "самое простое", которое вы получите. Вы можете создать своего собственного мастера и вызвать правильный метод, но это намного больше работы.

Единственное, что я мог бы порекомендовать, - использовать вместо этого событие OnCreatedUser .

ссылка: 4guysfromrolla

1 голос
/ 28 января 2009

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

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

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

Спасибо

0 голосов
/ 28 января 2009

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

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

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

...