IActionFilter vs IResultFilter

时间:2014-03-05 02:06:59

标签: .net asp.net-mvc

请解释IActionFilter和IResultFilter之间的区别。我知道OnActionExecuting在一个action方法执行之前发生,并且OnActionExecuted在一个action方法执行之后发生,并且进一步说明了对一个action方法的执行意味着什么。在IResultFilter的上下文中,我不理解的是执行操作结果的含义。

1 个答案:

答案 0 :(得分:5)

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

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

阅读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);

您将看到它首先找到视图,然后将视图呈现给Response输出流。