ASP.Net MVC Action Filter:OnActionExecuting和OnResultExecuting有关用法的区别

时间:2016-03-19 08:38:31

标签: asp.net-mvc action-filter

基本上我正在寻找OnActionExecutingOnResultExecuting之间的比较。

我们何时应该使用OnActionExecuting,何时应该使用OnResultExecuting

如果有人知道情况,那么分享知识。感谢

1 个答案:

答案 0 :(得分:3)

来自Filtering in ASP.NET MVC

  
      
  • 动作过滤器。这些实现IActionFilter并包装动作方法执行。 IActionFilter接口声明了两种方法:OnActionExecuting和OnActionExecuted。 OnActionExecuting在action方法之前运行。 OnActionExecuted在action方法之后运行,并且可以执行其他处理,例如向action方法提供额外数据,检查返回值或取消action方法的执行。

  •   
  • 结果过滤器。这些实现IResultFilter并包装ActionResult对象的执行。 IResultFilter声明了两种方法:OnResultExecuting和OnResultExecuted。 OnResultExecuting在执行ActionResult对象之前运行。 OnResultExecuted在结果之后运行,并且可以执行结果的其他处理,例如修改HTTP响应。 OutputCacheAttribute类是结果过滤器的一个示例。

  •   

简而言之,这些是来自不同时间执行的2种不同类型过滤器的事件。

IActionFilter.OnActionExecuting在操作方法之前执行。 {0}在操作方法返回后执行(即调用IResultFilter.OnResultExecuting),但在执行return View()之前执行

用简单的英语:ActionResult可用于在业务逻辑运行之前进行干预。在业务逻辑运行之后和显示逻辑运行之前,可以使用OnActionExecuting进行干预。