我创建了自定义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();
感谢您提供任何帮助
乔恩霍金斯答案 0 :(得分:2)
答案 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,但在过去,当我不得不做类似的事情时,我只是把额外的值塞进一个未使用的参数,比如密码重置问题或答案。虽然,我不完全确定如何使用向导管理它。
这很难看,但只要明确记录(为了安全起见,我会评论方法本身以及你引用它的任何地方)它会正常工作。
与创建自己的向导相比,它的工作量也少得多。