0

他社のユーザーが当社に直接注文できるサイトを開発中です。私はすでにユーザーの役割を割り当てており、登録時のいくつかの選択に基づいてプログラムで割り当てています。CreateUserWizardフォームを使用するページを追加し、顧客からさらに情報を収集するための手順を追加しました(具体的には、会社名なので、注文できる部品がわかります)。問題は、誰かが最初の登録プロセスに入力して[ユーザーの作成]をクリックすると、そこでユーザーが作成され、会社情報を収集する次のステップにユーザーを誘導することです。ユーザーがプロセスを中止した場合でも、ユーザーアカウントは作成され、ユーザーグループには割り当てられません。CreateUserWizardの最後のページ(ステップ)には、2番目のステップからのいくつかの選択に基づいてユーザーグループに割り当てる終了ボタンがあります。登録プロセスが実際に完了するまで、ユーザーが追加されないようにするにはどうすればよいですか?これが私がこれまで舞台裏で持っているコードです。

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

コードが何をしているのかわかりません...検証を実行しているように見えますが、ユーザーの作成を続けています。そうではありませんか:

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

一時的な場所 (セッション、db の一時テーブルなど) に保存してから、最後のステップですべての入力をバッチ処理する必要があります。

于 2012-08-17T12:13:13.813 に答える
0

解決策を見つけました。ウィザードの登録手順を変更したので、最初に会社やその他の情報を求め、次にユーザー名、パスワードなどを求めます。

于 2012-08-17T16:36:14.143 に答える