Определить тип ActionResult в ActionFilter? - PullRequest
3 голосов
/ 22 февраля 2012

У меня есть глобальный ActionFilter, выполняющийся на каждом ActionResult.Можно ли обнаружить тип ActionResult (например, JsonResult против ActionResult) внутри ActionFilter?

Например, я хочу, чтобы ActionFilter немедленно завершил работу здесь:

public JsonResult someAjaxAction()
{
}

Но я бы хотел, чтобы это было волшебным:

public ActionResult PageView()
{
}

Да, я знаю, что мог бы просто использовать атрибут ActionFilter и украсить действия, которые я хотел бывыполнить это, но я бы хотел сохранить его как глобальный ActionFilter и определить внутри действия, нужно ли мне выполнять желаемую работу.

Ответы [ 2 ]

5 голосов
/ 22 февраля 2012
public class MyActionFilterAttribute : ActionFilterAttribute
{
    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {
        if (filterContext.Result is ViewResult)
        {
            ...
        }
        else if (filterContext.Result is JsonResult)
        {
            ...
        }
        ...
    }
}
0 голосов
/ 22 февраля 2012

ActionExecutingContext имеет свойство с именем result , который имеет тип ActionResult, может решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...