2016-03-30 8 views
0

Ich muss einen Filter auf die Anfrage anwenden. Ich habe eine Unterklasse von ActionFilterAttribute mit überlagerten OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) erstellt. Ich habe ein wenig anspruchsvolle Logik innerhalb des Filters und in einigen Fällen muss ich den Lauf des Filters stoppen und das Ergebnis der Standardaktion zurückgeben (als ob es keinen Filter gäbe). Wenn I return im Filter, Workflow scheint vollständig zu stoppen, gibt kein Aktionsergebnis zurück. Ich habe versucht, await next() oder base.OnActionExecutionAsync(...) anrufen, aber das hat nicht funktioniert. Wie kann ich die Rückkehr vom Filter implementieren? Ich habe so etwas wie dies:ASP.Net Core Returning von Aktion Filter

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

Können Sie Ihren Code posten? Und warum willst du einen 'ActionFilter' implementieren, ist eine' Middleware' die beste Wahl? –

+0

@aguafrommars Ich zweifle an einer Middleware, weil meine Logik nur mit MVC zu tun hat und ich keinen weiteren Handler in der Pipeline hinzufügen möchte für die ganze App – Slip

Antwort

1

zum Rück Standardresultset hinzufügen 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.. 
    } 
} 
Verwandte Themen