C # asp.net personalizado MembershipUser.createUser método (), chamá-lo de controle CreateUserWizard

StackOverflow https://stackoverflow.com/questions/488143

Pergunta

personalizado

Eu criei MembershipUser, MembershipProvider e RolePrivoder classes. Estes todo o trabalho e estou muito feliz com ele, além de uma coisa. Eu tenho um campo extra na tabela "Usuários". Eu tenho um método substituído para CreateUser () que leva na variável extra e coloca no DB.

As minhas questões é que eu quero ser capaz de ter este chamado a partir do controle Create User Wizard. Eu ter personalizado o controle para ter um drop-down para preencher meu campo extra. Eu tenho usado o seguinte código para armazenar esse pedaço de informação, mas eu estou em uma perda de como eu usar o perfil ou ligar para o meu costume método 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(); 

Obrigado por toda e qualquer ajuda

Jon Hawkins

Foi útil?

Solução

Eu acho que sua solução é o "mais fácil" você está indo começar. Você pode criar seu próprio assistente e chamar o método correto, mas isso é muito mais trabalho.

A única coisa que eu poderia recomendar é usar o OnCreatedUser evento em seu lugar.

referência: 4guysfromrolla

Outras dicas

Esta não é a resposta, mas eu encontrei um trabalho em torno, ainda gostaria de saber se alguém poderia responder a pergunta diretamente ...

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

No meu primeiro CreateUserWizardStep se colocar o método acima para fogo em Desativar. Como neste momento ele tem inserido o usuário para a DB posso obter o usuário para fora, elenco para minha classe MembershipUser, defina a variável e todos método a atualização.

Como eu dizer que este é um trabalho em torno da forma como eu teria gostado de ter resolvido isso, mas ele funciona.

Graças

Esta é também incrivelmente hacky, mas no passado, quando eu tive que fazer coisas semelhantes, eu apenas amontoados o valor extra em um parâmetro não utilizado, como a questão de redefinição de senha ou resposta. Embora, eu não sou inteiramente certo como você pode gerenciar isso usando o assistente.

É feio, mas desde que seja explicitamente documentadas (para ser seguro, eu comentar sobre o próprio método, bem como qualquer lugar que você referenciá-lo) ele vai funcionar bem.

É também muito menos trabalho do que criar o seu próprio assistente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top