C# - 从方法而不是ActionView使用RedirectToAction

时间:2016-03-18 14:52:45

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

我正在尝试创建一个方法,我可以从控制器中的所有catch部分调用该方法,该方法被重定向到Error控制器的Home操作。 Controller中的方法和catch语句如下所示:

public class myController : Controller
{

     public RETURNTYPE redirectMethod(Exception e)
     {
          //Using e for logging methods
          RedirectToAction("Error", "Home");
     }

     public ActionResult Index()
     {
          try
          {
              <!-- try statement -->
          }
         catch (Exception e)
         {
              redirectMethod(e);
         }

     return View();
     }
}

显然我的redirectMethod中有很多其他代码,否则我会直接在我的口号中使用RedirectToAction。任何人都可以帮助我查看redirectMethod的返回类型,如果RedirectToAction在方法(而不是ActionResult)中不起作用,那么我应该使用什么?

2 个答案:

答案 0 :(得分:3)

RedirectToAction()方法返回RedirectToRouteResult类型的对象,该对象继承自ActionResult,因此您可以将它们中的任何一个用作返回类型。有关详细信息,请参阅thisthis

答案 1 :(得分:3)

这是你可以使用的:

protected ActionResult redirectMethod(Exception e)
{
    //Using e for logging methods
    return RedirectToAction("Error", "Home");
}

public ActionResult Index()
{
    try
    {
        <!-- try statement -->
    }
    catch (Exception e)
    {
        return redirectMethod(e);
    }

    return View();
}

请注意,这仍然不理想。发生错误的URL会丢失,因此用户无法报告,并且执行刷新以重试将无法正常工作。