0

在控制器的 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.OnActionExecuting(filterContext);在它的OnActionExecuting.

4

1 回答 1

0

您不应在操作过滤器中调用 ExecuteResult()。将 filterContext.Result 设置为非空值足以防止 MVC 管道调用进一步的过滤器。

应改为将子类类型更改为:

base.OnActionExecuting(filterContext);
if (filterContext.Result != null) {
  return; // something got short-circuited
}
于 2012-08-24T18:27:35.453 回答