-1

MVC4 でサイトを作成していますが、.NET で MVC を使用するのはこれが初めてで、ログインと登録については熟考しました。私はこのシナリオを持っています:

ウェブサイトにはロール「A」とロール「B」があり、ユーザーが登録ページに誘導する前に登録していない場合、特定のセクションの登録セクションをクリックすると、登録ページに誘導されます. ただし、クリックした登録ボタンに基づいて、登録ページでロールを自動的に定義する必要があります。

したがって、ユーザーが登録時にボタン「A」をクリックすると、ロール「A」が割り当てられ、エージェント「B」が登録すると、自動的にロール「B」が割り当てられます。人々が選択を上書きするのを止めるために変数を取得することは避けたいです。

4

1 に答える 1

1

実装方法はたくさんあります。例えば:

bool IsAgentAあなたのRegisterModel class中に追加するAccountModels.cs

public class RegisterModel
    {
        [Required]
        public string UserName { get; set; }

        [Required]
        [DataType(DataType.Password)]
        public string Password { get; set; }

        [DataType(DataType.Password)]
        public string ConfirmPassword { get; set; }

        public bool IsAgentA {get; set;}
    }

のラジオ ボタンを追加IsAgentAしますRegistration View(はい - エージェント A、いいえ - エージェント b)。ここでは書きません。

その後、次のように変更しRegister ActionResultます。AccountController

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterModel model)
{
   if (ModelState.IsValid)
   {
                try
                {
                    WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
                    WebSecurity.Login(model.UserName, model.Password);

                    if (model.IsAgentA)
                    {
                    Roles.AddUserToRole(model.UserName, "Role A"); // user in role A 
                    }
                    else
                    {
                    Roles.AddUserToRole(model.UserName, "Role B"); // user in role B
                    }

                    return RedirectToAction("Index", "Home");
                }
                catch (MembershipCreateUserException e)
                {
                    ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
                }
            }

            return View(model);
        }
于 2013-08-16T15:36:15.963 に答える