RedirectToAction根本不起作用

时间:2012-01-10 15:47:44

标签: asp.net-mvc view controller

在AccountController中,在我拥有的方法的最后:

RedirectToAction("EveryView", "Account");

在同一个控制器文件中,我有这个方法:

public ActionResult EveryView()
    {
        return View();
    }

但这种方法永远不会被调用。我在'{'上有一个断点,它永远不会被击中!

8 个答案:

答案 0 :(得分:56)

你已经'返回',否则它不会重定向。

return RedirectToAction("EveryView", "Account");

答案 1 :(得分:10)

嗯......很难看到(或说出)问题是什么,因为代码似乎很简单。

也许一点调试可能会有所帮助! 尝试在默认的Index()ActionResult内部创建一个新的TestController:

return RedirectToAction("EveryView", "Test");

然后,创建EveryView()ActionResult方法并设置断点。

public ActionResult EveryView()
{
    return View();
}

如果您尝试http://localhost/Test/Index会发生什么?它有效吗?

如果这不起作用,也许您可​​能需要查看您的路线,并确保您没有特定的路线定义可能会让事情破裂。

或者,您可以在Global.asax内添加此方法:

protected void Application_Error(object sender, EventArgs e)
{
    Exception ex = Server.GetLastError();
}

并在线上设置一个断点以捕捉任何未知错误。

答案 2 :(得分:8)

我最近的项目也遇到了这个问题。我最后通过在重定向的操作上添加[AllowAnonymous]来解决它,因为控制器用[Authorize]属性修饰,此时用户没有登录。希望这是一个帮助。

答案 3 :(得分:1)

我遇到了这个问题,这是因为我添加的自定义MustBeLoggedIn过滤器不允许重定向到该方法,类似于user2192287。

这意味着我过滤器正在将我重新引导回我开始的动作。

这可能是petko_stankoski的问题,因为它在他们的帐户控制器中。

答案 4 :(得分:1)

我有类似的问题。我刚从函数中删除了post属性[HttpPost]到我重定向的位置。

答案 5 :(得分:0)

如果未调用Action方法,则可能是因为该方法已为HttpPost注册,但是您正在发送HttpGet请求。因此,最好保留使用[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]

接受两个请求的方法。

答案 6 :(得分:0)

您必须归还

    public ActionResult Pay(string id)
    {
        return RedirectToAction("EveryView", "Account");;
    }

答案 7 :(得分:-1)

评论所有已加载的脚本并再次尝试。此脚本的干扰