基本上我正在寻找OnActionExecuting
和OnResultExecuting
之间的比较。
我们何时应该使用OnActionExecuting
,何时应该使用OnResultExecuting
。
如果有人知道情况,那么分享知识。感谢
答案 0 :(得分:3)
动作过滤器。这些实现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
进行干预。