无法在IResultFilter OnResultExecuting中设置新的RedirectResult

时间:2014-04-09 14:09:38

标签: asp.net-mvc asp.net-mvc-3

有谁知道为什么IResultFilter.OnResultExecuting方法中的以下内容不起作用?

filterContext.Result = new RedirectResult("http://www.google.com");

我不是在寻找有关如何在IResultFilter.OnResultExecuting方法中重定向的答案,因为已经问过here并且我实际上已经提供了答案。

相反,我在理由或逻辑之后知道为什么这不起作用。它看起来应该可以工作,但在Mvc 3中却没有。看起来除非你设置filterContext.Cancel = true,否则原始的ActionResult正在执行。这可能是Mvc 3特有的错误,也可能是故意的。但是如果是有意的那么为什么呢?

1 个答案:

答案 0 :(得分:1)

那是因为你已经迟到了,控制器已经被调用了。

基本ActionFilterAttribute类具有以下可以覆盖的方法:

  • OnActionExecuting - 在控制器操作之前调用此方法 被执行。
  • OnActionExecuted - 在控制器操作后调用此方法 执行。
  • OnResultExecuting - 在控制器操作之前调用此方法 结果已执行。
  • OnResultExecuted - 在控制器操作后调用此方法 结果已执行。

如果要重定向用户,则应使用:在控制器操作之前调用的OnActionExecuting。

来源:http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/understanding-action-filters-cs