RedirectToAction根本不起作用

pet*_*ski 15 asp.net-mvc controller view

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

RedirectToAction("EveryView", "Account");
Run Code Online (Sandbox Code Playgroud)

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

public ActionResult EveryView()
    {
        return View();
    }
Run Code Online (Sandbox Code Playgroud)

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

小智 56

你放'返回'否则它不会重定向.

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

  • 好接!这让我很伤心.因为代码仍然运行,只是完全通过RedirectToAction线而不会崩溃!很难调试和实现...谢谢 (2认同)
  • 我有完全相同的问题.很容易错过,屏幕上没有抛出任何错误信息.只是我们需要记住的东西,在开头添加'return'. (2认同)

Vli*_*nce 10

嗯...很难看到(或说)问题是什么,因为代码看起来很微不足道.

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

return RedirectToAction("EveryView", "Test");
Run Code Online (Sandbox Code Playgroud)

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

public ActionResult EveryView()
{
    return View();
}
Run Code Online (Sandbox Code Playgroud)

如果你试试http:// localhost/Test/Index会发生什么?它有用吗?

如果这不起作用,也许你可能想看看你的路线,并确保你没有特殊的路线定义可以让事情破裂.

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

protected void Application_Error(object sender, EventArgs e)
{
    Exception ex = Server.GetLastError();
}
Run Code Online (Sandbox Code Playgroud)

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

  • 我遇到了同样的问题,在我的情况下这是错误,所以我按照 Global.asax 文件中的 @Vlince 建议进行调试,然后收到错误 (2认同)

小智 8

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