.net - IActionFilter 与 IResultFilter

标签 .net asp.net-mvc

请解释 IActionFilter 和 IResultFilter 之间的区别。我知道 OnActionExecuting 发生在 action 方法执行之前, OnActionExecuted 发生在 action 方法执行之后,以及执行 action 方法意味着什么。在 IResultFilter 的上下文中,我不明白的是执行操作结果的含义。

最佳答案

操作过滤器包含在 Controller 操作执行之前和之后执行的逻辑。例如,您可以使用操作过滤器来修改 Controller 操作返回的 View 数据。

结果过滤器(或 IResultFilters)包含在执行 View 结果之前和之后执行的逻辑。例如,您可能希望在 View 呈现给浏览器之前修改 View 结果。

阅读 Understanding Action Filters.

为了阐明 ViewResult 的作用,让我们看一下 ViewResultBase 的执行:

      viewEngineResult = this.FindView(context);
      this.View = viewEngineResult.View;

      TextWriter output = context.HttpContext.Response.Output;
      this.View.Render(new ViewContext(context, this.View, this.ViewData, this.TempData, output), output);

您将看到它首先找到 View ,然后将 View 呈现到响应输出流。

关于.net - IActionFilter 与 IResultFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22187076/

相关文章:

.net - 回发数据和 View 状态数据有什么区别

javascript - 服务器上托管的 ASP.net mvc 应用程序无法加载 cesium map 资源

javascript - asp.net - 操作页面内容

c# - 在 Windows 窗体中显示控件集合

.net - 模幂函数中的整数溢出

.net - Resharper:代码风格共享 - 强制执行

c# - 无法加载文件或程序集 CrystalDecisions.ReportAppServer.ClientDoc

c# - 如何在 asp.net web api 中将图像流式传输到客户端应用程序?

javascript - 使用 jquery ajax 调用的 Asp.Net MVC Razor 图

c# - DllImport 装饰名称问题 - 无法找到入口点