C#asp.net自定义MembershipUser.createUser()方法,从createuserwizard控件中调用它

时间:2009-01-28 15:50:28

标签: c# createuserwizard membershipuser

我创建了自定义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 个答案:

答案 0 :(得分:2)

我认为您的解决方案是您将获得的“最简单”。您可以创建自己的向导并调用正确的方法,但这需要做更多的工作。

我唯一能推荐的是使用OnCreatedUser事件。

参考:4guysfromrolla

答案 1 :(得分:1)

这不是答案,但我找到了解决办法,仍然想知道是否有人可以直接回答这个问题......

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类,设置变量和所有更新方法。

正如我所说,这是一种解决方法,我希望解决它,但它有效。

由于

答案 2 :(得分:0)

这也是令人难以置信的hacky,但在过去,当我不得不做类似的事情时,我只是把额外的值塞进一个未使用的参数,比如密码重置问题或答案。虽然,我不完全确定如何使用向导管理它。

这很难看,但只要明确记录(为了安全起见,我会评论方法本身以及你引用它的任何地方)它会正常工作。

与创建自己的向导相比,它的工作量也少得多。