2016-03-30 8 views
0

Мне нужно применить фильтр к запросу. Я создал подкласс ActionFilterAttribute с переопределенным OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next). У меня есть немного сложная логика внутри фильтра, и в некоторых случаях я должен остановить работу фильтра и вернуть результат действия по умолчанию (как если бы не было фильтра). Если I return в фильтре, рабочий процесс, кажется, полностью прекращается, результат действия не возвращается. Я попробовал await next() или позвонил base.OnActionExecutionAsync(...), но это не сработало. Как я могу реализовать возврат из фильтра? у меня есть что-то вроде этого:ASP.Net Core Возврат из фильтра действий

public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) 
    { 
     //some logic 

     if (questionnaireId == Guid.Empty) 
     { 
      //here I need to let the mvc action run normally 
      return;//it doesn't work 
     } else { 
      //some logic.. 
     }    
    } 
+0

Можете ли вы разместить свой код? И почему вы хотите реализовать «ActionFilter», может быть «промежуточное ПО» - лучший выбор. –

+0

@aguafrommars. Я сомневаюсь в промежуточном программном обеспечении, потому что моя логика касается только MVC, и я бы не хотел добавлять еще один обработчик в конвейер для всего приложения – Slip

ответ

1

для возвращения результата по умолчанию добавить await base.OnActionExecutionAsync(context, next);

public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) 
{ 
    //some logic 

    if (questionnaireId == Guid.Empty) 
     await base.OnActionExecutionAsync(context, next); 
    else { 
     //some logic.. 
    } 
}