无法将操作重定向到操作

时间:2012-08-08 05:10:39

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

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

我点击了网址:/ 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方法,我最终得到一个空白视图..

2 个答案:

答案 0 :(得分:2)

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

希望这会有所帮助:)

答案 1 :(得分:1)

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

但这不是你应该如何处理安全问题。您应该使用AuthorizationFilter来控制访问。