web-dev-qa-db-fra.com

Comment implémenter la validation de modèle personnalisé dans ASP.NET Core?

Dans les versions précédentes d'ASP.NET MVC, la manière d'ajouter une validation personnalisée à votre modèle consistait à implémenter la méthode IValidatableObject et à implémenter votre propre méthode Validate(). Par exemple:

public class BestModelEver : IValidatableObject {
    public DateTime? Birthday { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) {
        if (Birthday.HasValue) {
            yield return new ValidationResult("Error message goes here");
        }
    }
}

Est-ce toujours le moyen recommandé d'ajouter une validation personnalisée à un modèle dans ASP.NET Core? L'utilisation de IValidatableObject prend un System.ComponentModel.DataAnnotations dépendance.

26
Justin Helgerson

Il existe deux façons d'effectuer une validation de modèle personnalisée dans ASP.NET Core:

  • Un attribut personnalisé sous-classé à partir de ValidationAttribute. Cela est utile lorsque vous souhaitez appliquer une logique métier personnalisée à un modèle particulier propriété avec un attribut.
  • Implémentation de IValidatableObject pour la validation au niveau de la classe. Utilisez-le à la place lorsque vous devez effectuer la validation sur un modèle entier à la fois.

documentation contient des exemples des deux. Dans votre cas, IValidatableObject serait probablement la meilleure approche.

24
Nate Barbettini