son net mvc los filters cuáles attribute asp asp.net asp.net-mvc asp.net-mvc-3

asp.net - net - ¿Cuándo se activan exactamente OnResultExecuted y OnResultExecuting?



cuáles son los action filters in mvc (2)

Estoy creando un ActionFilterAttribute personalizado para transformar ViewResult y redirigir en JsonResult s durante las solicitudes de ajax. He conectado la mayor parte de él a través de pruebas unitarias y, por alguna razón, asumí que mi transformación tenía que realizarse en OnResultExecuting , me di cuenta de que este no era el caso y que el método correcto para anular era OnActionExecuted , que se llama tan pronto como El método de acción devuelve un resultado.

Mi pregunta es cuándo se están OnResultExecuted exactamente a OnResultExecuted y a OnResultExecuting ya que tengo puntos de interrupción en las cuatro invalidaciones y solo los de OnActionExecuting y OnActionExecuted están disparando.



Tomemos el siguiente ejemplo que realiza la transformación que describiste:

public class MyActionFilterAttribute : ActionFilterAttribute { public override void OnActionExecuted(ActionExecutedContext filterContext) { if (filterContext.HttpContext.Request.IsAjaxRequest()) { var result = filterContext.Result as ViewResultBase; if (result != null && result.Model != null) { filterContext.Result = new JsonResult { Data = result.Model, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; } } } public override void OnResultExecuting(ResultExecutingContext filterContext) { } public override void OnResultExecuted(ResultExecutedContext filterContext) { } }

El método OnResultExecuting se invocará inmediatamente antes de que se ejecute el método ExecuteResult del resultado de la acción y el método OnResultExecuted inmediatamente después.