【问题标题】:ASP.Net MVC Action Filter : What is the difference between OnActionExecuting and OnResultExecuting regarding usageASP.Net MVC 动作过滤器:OnActionExecuting 和 OnResultExecuting 关于用法有什么区别
【发布时间】:2016-03-19 08:38:30
【问题描述】:

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

什么时候应该使用OnActionExecuting,什么时候使用OnResultExecuting

【问题讨论】:

  • OnActionExecuting - 示例用法是您想要本地化过滤器(翻译)。 OnResultExecuting- 用于执行日志记录和输出缓存(来自 msdn)
  • @MikeDebela 一个请求,如果可能的话,请包括一些相关链接,这些链接告诉我人们在什么样的情况下使用 OnResultExecuting 和 OnActionExecuting。谢谢

标签: asp.net-mvc action-filter


【解决方案1】:

来自Filtering in ASP.NET MVC

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

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

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

IActionFilter.OnActionExecuting 执行 action 方法执行之前。 IResultFilter.OnResultExecuting动作方法返回之后执行(即调用return View()),但之前ActionResult执行。

简而言之:OnActionExecuting 可用于在业务逻辑运行之前进行干预。 OnResultExecuting 可用于在业务逻辑运行后和显示逻辑运行前进行干预。

【讨论】:

  • 存在任何好的文章来解释 OnActionExecuting 和 OnResultExecuting 的实际用法,并显示用法和场景方面的差异。请告诉我人们必须使用 OnResultExecuting 的场景。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 2019-05-01
  • 2019-02-11
  • 1970-01-01
  • 1970-01-01
  • 2016-10-27
  • 2015-04-18
相关资源
最近更新 更多