2

ユーザーが役割に応じて異なるページに登録した後にユーザーをリダイレクトする方法

私は運が悪かったので、アカウントコントローラーに以下を実装しようとしました。

// POST: /Account/Register
         [AllowAnonymous]
         [HttpPost]
         public ActionResult Register(RegisterModel model)
         {


             if (ModelState.IsValid)
             {
                 // Attempt to register the user
                 MembershipCreateStatus createStatus;
                 Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);

                 if (createStatus == MembershipCreateStatus.Success)
                 {
                     FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);
                     Roles.AddUserToRole(model.UserName, model.Role);

                     {
                         if (Roles.IsUserInRole("Student"))
                         {

                             return RedirectToAction("create, "Student");
                         }
                         else if (Roles.IsUserInRole("Teacher"))
                         {

                             return RedirectToAction("create, "Teacher");
                         }

                         return RedirectToAction("index", "Home");
                     }



                     List<SelectListItem> list = new List<SelectListItem>();
                     SelectListItem item;
                     foreach (String role in Roles.GetAllRoles())
                     {
                         item = new SelectListItem { Text = role, Value = role };
                         list.Add(item);
                     }

                     ViewBag.roleList = (IEnumerable<SelectListItem>)list;







                     ModelState.AddModelError("", ErrorCodeToString(createStatus));




                     // If we got this far, something failed, redisplay form
                     return View(model);
                 }
             }
         }

ヘルプやアドバイスを歓迎します

4

1 に答える 1

2

新しいビューが作成され、次のコードが追加されました。

@{
        ViewBag.Title = "CreateProfilePage";
    }

    <h2>CreateProfilePage</h2>



    @if (User.IsInRole("Student"))
     {  




      <div> @Html.ActionLink("Create Landlord Profile", "Create", "Student") </div> 




     } 


      @if (User.IsInRole("Teacher"))
     {  


      <div> @Html.ActionLink("Create Teacher Profile", "Create", "Teacher") </div> 

また、アカウントコントローラーのレジスターのリダイレクトが新しいビューに変更されました。

// POST: /Account/Register
         [AllowAnonymous]
        [HttpPost]
        public ActionResult Register(RegisterModel model)
        {


            if (ModelState.IsValid)
            {
                // Attempt to register the user
                MembershipCreateStatus createStatus;
                Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);

                if (createStatus == MembershipCreateStatus.Success)
                {
                    FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);
                    Roles.AddUserToRole(model.UserName, model.Role);
                   /////changed here/// return RedirectToAction("CreateProfilePage", "Property");
                }
                else
                {


                    List<SelectListItem> list = new List<SelectListItem>();
                    SelectListItem item;
                    foreach (String role in Roles.GetAllRoles())
                    {
                        item = new SelectListItem { Text = role, Value = role };
                        list.Add(item);
                    }

                    ViewBag.roleList = (IEnumerable<SelectListItem>)list;







                    ModelState.AddModelError("", ErrorCodeToString(createStatus));
                }
            }

コードは、ログオンしているユーザーの役割に応じたリンクを表示するだけです。

于 2012-04-25T22:35:09.437 に答える