Je dois appliquer un filtre à la demande. J'ai créé une sous-classe de ActionFilterAttribute
avec OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
à priorité. J'ai une logique un peu sophistiquée à l'intérieur du filtre et dans certains cas, je dois arrêter le fonctionnement du filtre et retourner le résultat de l'action par défaut (comme s'il n'y avait pas de filtre). Si je return
dans le filtre, le flux de travail semble s'arrêter complètement, aucun résultat d'action ne retourne. J'ai essayé de await next()
ou appelez base.OnActionExecutionAsync(...)
, mais cela n'a pas fonctionné. Comment puis-je implémenter le retour du filtre? J'ai quelque chose comme ceci:ASP.Net Core Retour d'un filtre d'action
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..
}
}
Pouvez-vous poster votre code? Et pourquoi voulez-vous implémenter un 'ActionFilter', peut-être un' middleware' est un meilleur choix –
@aguafrommars Je doute d'un middleware parce que ma logique traite uniquement de MVC et je ne voudrais pas ajouter un autre gestionnaire dans le pipeline pour l'ensemble de l'application – Slip