【问题标题】:Cannot redirect action to action无法将操作重定向到操作
【发布时间】:2012-08-08 05:10:38
【问题描述】:

查看了这里的所有帖子,但没有一个能解决我的问题。

我点击网址:/Users/KickOutUser

public void KickOutUser()
        {
            TempData["ErrorMessage"] = "You need to be logged in to access that content";
            //Redirect to Login
            RedirectToAction("Login");
        }

        /*user controller*/
        public ActionResult Login()
        {
            //E.G ErrorMessage comes from HandleUnauthenticatedUser 
            ViewData["ErrorMessage"] = TempData["ErrorMessage"] ?? null;
            return View();
        }

通过调试,我可以看到它点击了第一个方法,然后重定向,但重定向调用从不调用 Login 方法,我最终得到一个空白视图..

【问题讨论】:

    标签: asp.net asp.net-mvc-4


    【解决方案1】:
    public void KickOutUser()
    

    此方法不返回任何内容,请阅读this

    所以在这种情况下,你可以做的是返回ActionResult或者更好的ViewResult,如下所示,

        public ActionResult KickOutUser()
        {
            TempData["ErrorMessage"] = "You need to be logged in to access that content";
            //Redirect to Login
            return RedirectToAction("Login");
        }
    

    希望这会有所帮助:)

    【讨论】:

      【解决方案2】:

      您必须从操作方法(具有 ActionResult 返回类型)返回 RedirectToAction。单独调用 RedirectToAction 不会做任何事情。

      不过,这不是您处理安全性的方式。您应该改为使用 AuthorizationFilter 来控制访问。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-30
        • 2020-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多