1

我创建了自定义 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(); 

感谢您的任何帮助

乔恩·霍金斯

4

3 回答 3

2

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

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

参考:4guysfromrolla

于 2009-01-28T16:50:30.360 回答
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 类,设置变量和所有更新方法。

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

谢谢

于 2009-01-28T16:28:18.517 回答
0

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

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

这也比创建自己的向导少得多。

于 2009-01-28T17:01:00.637 回答