4

Я создал ActionFilterAttribute, в котором реализован метод OnActionExecuted. Это означает, что он запускается после метода Action. Но в определенных условиях я хочу, чтобы OnActionExecuted не выполнялся.Пропустить OnAction Выполнено выполнение

Как я могу использовать метод Action, чтобы предотвратить выполнение ActionFilter?

В настоящем время, я сделал этот:

О методе действий:

RouteData.Values.Add("CancelActionFilter", true); 

А на ActionFilter.OnActionExecuted():

if (filterContext.RouteData.Values["CancelActionFilter"] != null) 
{ 
    return; 
} 

Но я думаю, что может существовать более элегантный подход.

+1

Я отредактировал ваше название. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

ответ

3

OnActionExecuted вызывается внутри метода InvokeActionMethodFilter в классе ControllerActionInvoker.

Внутри этого метода нет ничего, чтобы предотвратить действие, выполняемое. Я думаю, что ваше - хорошее решение.

Code of ControllerActionInvoker class

+0

Спасибо, приятно знать! –

Смежные вопросы