J'utilise ASP.NET Core et FluentValidation.Échec de la validation du traitement dans le filtre d'exception et affichage du ré-affichage
Lorsqu'une action POST reçoit une entrée non valide, il est de coutume de réengendrer la forme d'entrée vue, avec des erreurs de validation:
if (!ModelState.IsValid)
return View("nameOfViewRenderedByGetAction", model);
Mais ma validation est effectivement réalisée dans un service, par FluentValidation, qui jette ValidationException
. Je veux le gérer dans un filtre d'exception:
public class ValidationFilterAttribute : ActionFilterAttribute, IExceptionFilter
{
public void OnException(ExceptionContext context)
{
// only handle ValidationException
var ex = context.Exception as ValidationException;
if (ex == null) return;
// re-render get action's view, or redirect to get action
// ??
}
}
Je suis bloqué au "??" partie, parce que Core a changé les signatures de nombreux types, et ExceptionContext
ne fait pas surface les données dont j'ai besoin pour faire ce travail.
Comment faire?
Il rend ce point de vue spécifique, et non redirect. Et il rend sans erreurs de validation, de sorte que l'information est perdue. – grokky
Vous ne pouvez pas utiliser un filtre d'exception pour transformer une exception en succès. Cependant, vous pouvez transmettre les données dont vous avez besoin. J'ai édité la réponse. –