如何在基本控制器的OnActionExecuting方法中重定向

时间:2012-08-24 17:00:56

标签: c# asp.net-mvc redirect

在OnActionExecuting控制器上,我正在尝试进行永久重定向。代码如下所示:

protected override void OnActionExecuting(ActionExecutingContext filterContext) {
  var resolvedUrl = "http://www.cnn.com";
  filterContext.Result = new RedirectResult(resolvedUrl);
  filterContext.Result.ExecuteResult(filterContext);
  return;
}

它不会立即重定向,因为此方法位于基类中,并且在return语句之后,将调用继承的类的OnActionExecuting方法。

问题:我如何进行重定向并停在那里,而不是在继承的类中做任何事情。感谢。

注意:在子类(继承自base的类)中,我base.OnActionExecuting(filterContext);中有OnActionExecuting

1 个答案:

答案 0 :(得分:0)

您不应该在动作过滤器中调用ExecuteResult()。将filterContext.Result设置为非null值足以阻止MVC管道调用更多过滤器。

应该将子类型更改为:

base.OnActionExecuting(filterContext);
if (filterContext.Result != null) {
  return; // something got short-circuited
}