RedirectToAction与$.post不起作用

本文关键字:不起作用 post RedirectToAction | 更新日期: 2023-09-27 18:13:52

我有一个问题。我试图使用控制器方法重定向我的应用程序,像这样:

[HttpPost]
    public ActionResult GetSelected(string Selected, string NewRoleID)
    {
        var StringSelected = Selected.Split(',');
        for (var i = 0; i < StringSelected.Count(); i++)
        {
            if (StringSelected[i] == "true")
            {
                R_ROLEMENU newMenu = new R_ROLEMENU();
                newMenu.RoleID = int.Parse(NewRoleID);
                newMenu.MenuID = i + 1;
                var existing = (from item in db.RoleMenus
                                where (item.RoleID == newMenu.RoleID && item.MenuID == newMenu.MenuID)
                                select item).ToArray();
                if (existing.Count() == 0)
                {
                    db.RoleMenus.Add(newMenu);
                    db.SaveChanges();
                }
            }
            else
            {
                R_ROLEMENU oldMenu = new R_ROLEMENU();
                oldMenu.RoleID = int.Parse(NewRoleID);
                oldMenu.MenuID = i + 1;
                var existing = (from item in db.RoleMenus
                                where (item.RoleID == oldMenu.RoleID && item.MenuID == oldMenu.MenuID)
                                select item).ToArray();
                if (existing.Count() != 0)
                {
                    db.RoleMenus.Remove(existing[0]);
                    db.SaveChanges();
                }
            }
        }
        return RedirectToAction("Logout", "Home");
    }

我用jquery调用这个方法,像这样:

$.post("/m_menu/getselected?selected=" + selectedmenus + "&newroleid=" + roleid, function () {
                    //todo
        });

问题是,应用程序一直重定向到索引页,而不是主控制器中的Logout操作。我做错了什么?控制器内的其他代码运行正常,只是重定向不起作用。请帮忙,谢谢

RedirectToAction与$.post不起作用

因为它是一个ajax调用RedirectToAction将简单地返回被调用的操作视图作为post的响应,您必须通过jquery在$中重定向。post回调函数:

In Action代替:

return RedirectToAction("Logout", "Home");

:

return Content(Url.Action("Logout", "Home"));

$的回调。post做这个:

$.post("/m_menu/getselected?selected=" + selectedmenus + "&newroleid=" + roleid, function (response) {
                  window.location =  response;
        });

或call call javascript在动作结束:

var script = "window.loaction ='"+Url.Action("Logout","Home")+"' ;";
return JavaScript(script);