我正在尝试创建一个方法,我可以从控制器中的所有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)中不起作用,那么我应该使用什么?
答案 0 :(得分:3)
RedirectToAction()
方法返回RedirectToRouteResult
类型的对象,该对象继承自ActionResult
,因此您可以将它们中的任何一个用作返回类型。有关详细信息,请参阅this和this。
答案 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会丢失,因此用户无法报告,并且执行刷新以重试将无法正常工作。