OnActionExecuted和OnResultExecuting之间的区别

时间:2013-11-21 15:36:11

标签: c# asp.net-mvc

OnActionExecuted和OnResultExecuting有什么区别?一旦处理完动作或在这两种方法之间发生了某些事情,它们是否会在彼此之后立即被解雇。就像View Engine的初始化一样,......

3 个答案:

答案 0 :(得分:36)

他们有不同的背景。

OnActionExecuted有一个ActionExecutedContext,您可以在其中查看该操作产生的结果。您还可以查看操作是否遇到异常,并查看是否已处理异常。

OnResultExecuting有一个ResultExecutingContext。在调用ActionResult实例之前调用此方法。您可以检查方法的结果,并可能取消结果的执行。这通常会导致状态代码为200的空白响应。(您无法在OnActionExecuted方法中执行此操作。)

答案 1 :(得分:8)

来自ActionFilterAttribute.OnResultExecuting Method

  

在执行操作结果之前由ASP.NET MVC框架调用。

来自ActionFilterAttribute.OnActionExecuted Method

  

在执行 后,由ASP.NET MVC框架调用。

答案 2 :(得分:1)

他们互相打电话。

无法初始化,因为您正在执行的ActionResult可能无法呈现View - ActionResults可以自由地执行他们选择的任何操作:返回JSON,返回文件,发出重定向等。