根据此文档 https://learn.microsoft.com/en-ca/aspnet/core/mvc/controllers/filters#result-filters结果过滤器将在操作过滤器之后执行。
我的问题:如果我不想处理异常,那么实现 ActionFilter 的 OnActionExecuted 和 ResultFilter 的 OnResultExecuting 之间有什么区别?看来 ActionFilter 允许我处理异常并跳过 ExceptionFilter。
文档中的示例并不清楚如何在操作过滤器或结果过滤器之间进行选择。
您能否举例说明什么情况下结果过滤器比操作过滤器更可取?
最佳答案
操作过滤器实现IActionFilter
或IAsyncActionFilter
接口(interface),并且它们的执行围绕操作方法的执行。操作过滤器包含在 Controller 操作执行之前和之后执行的逻辑。
结果过滤器实现IResultFilter
或IAsyncResultFilter
接口(interface),并且它们的执行围绕操作结果的执行。结果过滤器包含在执行 View 结果之前和之后执行的逻辑。
ActionFilter's OnActionExecuted and ResultFilter's OnResultExecuting
ActionFilter 的 OnActionExecuted:在调用操作方法后立即调用它。 (例如-在action执行 View 数据修改后做一些逻辑)
ResultFilter的OnResultExecuting:在执行结果之前调用;这意味着在渲染 View 之前。 (例如 - 在修改 View 结果之前执行一些逻辑。)
关于asp.net-core - 何时在 ASP.NET core MVC 中使用 ResultFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44848738/