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