0

我正在为我们公司开发一个网站,使其他公司的用户能够直接从我们公司订购。我已经分配了用户角色,并根据注册期间的一些选择以编程方式分配了它们。我添加了一个使用 CreateUserWizard 表单的页面,并添加了一个步骤来从客户那里收集更多信息(特别是公司名称,以便我们知道允许他们订购哪些部件)。问题是,一旦有人填写了第一个注册过程并单击“创建用户”,用户就会在那里创建,并将他们引导到我收集公司信息的下一步。如果用户中止进程,用户帐户仍会创建,并且不会分配给用户组。CreateUserWizard 的最后一页(步骤)有一个完成按钮,它根据第二步中的一些选择将它们分配给用户组。在注册过程实际完成之前,如何防止用户被添加?这是我到目前为止在幕后的代码。

protected void RegisterUser_FinishButtonClick(object sender, WizardNavigationEventArgs e)
{
    if (companyddl.SelectedValue == ""){
         errorlbl.Text = "Please Select A Company You Will Be Ordering Parts From.";

         MembershipCreateStatus createStatus = new MembershipCreateStatus();
         MembershipUser newUser = System.Web.Security.Membership.CreateUser(RegisterUser.UserName, RegisterUser.Password, RegisterUser.Email,
                                  RegisterUser.Question, RegisterUser.Answer, true, out createStatus);

         if (companyddl.SelectedValue == "SF")
             Roles.AddUserToRole(RegisterUser.UserName, "user_sf");
         if (companyddl.SelectedValue == "TL")
             Roles.AddUserToRole(RegisterUser.UserName, "user_tl");
         if (companyddl.SelectedValue == "" && companytxt.Text != "OurCompany")
             Roles.AddUserToRole(RegisterUser.UserName, "user");
         if ((companytxt.Text == "OurCompany" || companytxt.Text == "OurCompany, Inc.") && companyddl.SelectedValue == "")
             Roles.AddUserToRole(RegisterUser.UserName, "manager");
    }
}
4

3 回答 3

0

您应该保存到临时位置(会话、数据库中的临时表或其他),然后在最后一步中批处理所有输入/

于 2012-08-17T12:13:13.813 回答
0

我不确定您的代码在做什么......它似乎正在执行验证,但随后继续创建用户。不应该是:

protected void RegisterUser_FinishButtonClick(object sender, WizardNavigationEventArgs e)
{
    if (companyddl.SelectedValue == ""){
         errorlbl.Text = "Please Select A Company You Will Be Ordering Parts From.";
         return;
    }

    MembershipCreateStatus createStatus = new MembershipCreateStatus();
    MembershipUser newUser = System.Web.Security.Membership.CreateUser(RegisterUser.UserName, RegisterUser.Password, RegisterUser.Email, RegisterUser.Question, RegisterUser.Answer, true, out createStatus);

    if (companyddl.SelectedValue == "SF")
        Roles.AddUserToRole(RegisterUser.UserName, "user_sf");
    if (companyddl.SelectedValue == "TL")
        Roles.AddUserToRole(RegisterUser.UserName, "user_tl");
    if (companyddl.SelectedValue == "" && companytxt.Text != "OurCompany")
        Roles.AddUserToRole(RegisterUser.UserName, "user");
    if ((companytxt.Text == "OurCompany" || companytxt.Text == "OurCompany, Inc.") && companyddl.SelectedValue == "")
        Roles.AddUserToRole(RegisterUser.UserName, "manager");

}
于 2012-08-17T12:22:20.560 回答
0

我找到了解决方案。我刚刚更改了向导中的注册步骤,所以它首先会询问公司和其他信息,然后是用户名、密码等。

于 2012-08-17T16:36:14.143 回答