c# - RedirectToAction 不适用于 $.post

标签 c# jquery asp.net-mvc razor

我有一个问题。我正在尝试使用 Controller 方法重定向我的应用程序,如下所示:

[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
        });

问题是,应用程序一直重定向到索引页面,而不是 Home Controller 中的注销操作。我究竟做错了什么? Controller 中的其余代码运行良好,只是重定向不起作用。请帮忙,谢谢

最佳答案

因为它是一个 ajax 调用,RedirectToAction 将简单地返回名为 view 的操作作为对帖子的响应,您必须在 $.post 回调函数中通过 jquery 重定向:

在行动中而不是:

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

做:

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

并在 $.post 的回调中执行此操作:

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

或在 Action 结束时调用 call javascript:

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

关于c# - RedirectToAction 不适用于 $.post,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24856579/

相关文章:

c# - 在 SignalR 中更改 DefaultMessageBufferSize

c# - Asp.NET 身份自定义 SignInManager

javascript - 更改选择字段后不出现输入字段

C# 异步文件传输 - 在继续循环之前等待

c# - 使用反射获取 PropertyInfo,只想查看具有修改器的访问器

javascript - AJAX post请求和字符串连接

javascript - 如何使用下划线 + ES 6 设计更高效的循环

c# - MVC 减少重复代码

asp.net-mvc - MVCContrib 网格 - 对自定义列进行排序

asp.net-mvc - ASP.NET MVC – Controller 测试的模拟成员