C # asp.net personalizado MembershipUser.createUser método (), chamá-lo de controle CreateUserWizard
-
20-08-2019 - |
Pergunta
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
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.