【问题标题】:How to redirect in a base controller's OnActionExecuting method如何在基本控制器的 OnActionExecuting 方法中重定向
【发布时间】:2012-08-24 17:00:55
【问题描述】:

在控制器的 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方法。

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

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

【问题讨论】:

    标签: c# asp.net-mvc redirect


    【解决方案1】:

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

    子类类型应该改为读取:

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

    【讨论】:

      猜你喜欢
      • 2011-03-13
      • 1970-01-01
      • 2013-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-19
      • 1970-01-01
      相关资源
      最近更新 更多