Asp.net mvc MVC重定向到catch块中的操作

Asp.net mvc MVC重定向到catch块中的操作,asp.net-mvc,redirecttoaction,catch-block,Asp.net Mvc,Redirecttoaction,Catch Block,如果try块中出现错误,我将尝试重定向到从一个控制器到另一个控制器的操作。我想要实现的是,如果不同控制器出现问题,通过将所有错误定向到我的Homecontroller中的errorhandling ActionResult,向用户呈现视图的一般方式。这基本上就是代码的样子: try { Code that may go wrong } catch (Exception e) { set the errorcode (inte

如果try块中出现错误,我将尝试重定向到从一个控制器到另一个控制器的操作。我想要实现的是,如果不同控制器出现问题,通过将所有错误定向到我的Homecontroller中的errorhandling ActionResult,向用户呈现视图的一般方式。这基本上就是代码的样子:

    try
    {
        Code that may go wrong
    }
    catch (Exception e)
    {
        set the errorcode (integer)

        Logg the error (write a simple textfile)

        RedirectToAction("ErrorHandling", "Home", errorcode);
    }
在Homecontroller中,我想生成一个视图,告诉用户出了问题:

    public ActionResult ErrorHandling(int errorcode)
    {
        do something with the errorcode

        return View(different view depending on errorcode);
    }

我的问题是,如果我操纵代码以便抛出异常,那么除了被忽略的RedirectToAction之外,catcblock中的每个步骤都会执行。我错过了什么?我对这一点有点陌生,所以希望有一个简单的答案,我在你的catch block try中找不到…

  return new RedirectToRouteResult(new RouteValueDictionary
    { 
        {"Controller", "Home"}, 
        {"Action", "ErrorHandling"},
        {"errorcode", errorcode}
    });
也许您只是忘记了代码中的返回:

return RedirectToAction("ErrorHandling", "Home", errorcode);

我试过你的建议,但还是没能奏效。已忽略RedirectToRouteResult。。。以及重定向操作,我分别尝试了两种方法,但都不起作用。也许我应该补充一点,我的尝试/捕获在公共ActionResult中?我不知道这是否会影响什么?我将RedirectToRouteResult更改为:
返回新的RedirectToRouteResult(新的RouteValueDictionary{{{“控制器”、“主”}、{“操作”、“错误处理”})
现在它因某种原因而起作用。我在从一个控制器传递到另一个控制器时使用TempData传递参数,在从控制器传递到视图时使用ViewData传递参数。这是正确的/明智的方法还是有更好的方法?再说一次:我是舒尔,神奇之处在于返回这个词。如果您不小心遗漏了,请检查您以前的尝试。我认为你现在的做法是正确的/明智的。如果我完全理解TempData,我就不是舒尔了……TempData来自于我所理解的一个集合,该集合在单个请求的动作重定向之间持久化。顺便说一句,我在以前的尝试中使用了
return
关键字,所以我不知道哪里出了问题。但由于代码只执行我告诉它的操作,我想我一定是告诉了它一些错误的事情…;-)