Asp.net OnResultExecuted和OnResultExecuting火灾的具体时间?
我正在创建一个自定义的Asp.net OnResultExecuted和OnResultExecuting火灾的具体时间?,asp.net,asp.net-mvc,asp.net-mvc-3,Asp.net,Asp.net Mvc,Asp.net Mvc 3,我正在创建一个自定义的ActionFilterAttribute,以便在ajax请求期间转换ViewResults并重定向到JsonResults。我通过单元测试完成了大部分工作,出于某种原因,我假设我的转换必须在OnResultExecuting中进行,我意识到情况并非如此,正确的重写方法是OnActionExecuted,只要action方法返回结果,就会调用它 我的问题是,OnResultExecuted和OnResultExecuting究竟什么时候被调用,因为我在所有四个覆盖中都有断点
ActionFilterAttribute
,以便在ajax请求期间转换ViewResult
s并重定向到JsonResult
s。我通过单元测试完成了大部分工作,出于某种原因,我假设我的转换必须在OnResultExecuting
中进行,我意识到情况并非如此,正确的重写方法是OnActionExecuted
,只要action方法返回结果,就会调用它
我的问题是,
OnResultExecuted
和OnResultExecuting
究竟什么时候被调用,因为我在所有四个覆盖中都有断点,只有OnActionExecuting
和OnActionExecuted
中的断点触发描述:
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)
{
}
}
该方法将在操作结果的方法运行之前立即调用,之后立即调用。在查找了一段时间并试图理解接受的答案后,我发现了这一点。我认为这表明执行的顺序是正确的