Вопрос по asp.net-mvc, asp.net-mvc-3, asp.net – Когда именно OnResultExecuted и OnResultExecuting запускаются?

19

Я создаю кастомActionFilterAttribute для того, чтобы преобразоватьViewResultс и перенаправляет вJsonResults во время запросов ajax. Я связал большую часть этого через модульное тестирование, и я по какой-то причине предполагал, что мое преобразование должно было произойти вOnResultExecutingЯ понял, что это не тот случай, и правильный метод переопределения былOnActionExecuted, который вызывается, как только метод действия возвращает результат.

Мой вопрос, когда именноOnResultExecuted а такжеOnResultExecuting вызывается с тех пор, как я установил контрольные точки во всех четырех переопределениях и только вOnActionExecuting а такжеOnActionExecuted стреляют на всех.

Ваш Ответ

2   ответа
7

я нашел это. Я считаю, что это показывает порядок исполнения

OnActionExecuting OnActionExecuted OnResultExecuting OnResultExecuted

Проверьте эту ссылку под списком 2.http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/understanding-action-filters-cs

14

который выполняет преобразование, которое вы описали:

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)
    {
    }
}

OnResultExecuting метод будет вызван непосредственно перед результатом действияExecuteResult метод работает иOnResultExecuted Метод сразу после.

Похожие вопросы