wake-up-neo.com

Wie implementiere ich eine benutzerdefinierte Modellüberprüfung in ASP.NET Core?

In früheren Versionen von ASP.NET MVC konnten Sie Ihrem Modell eine benutzerdefinierte Überprüfung hinzufügen, indem Sie die Methode IValidatableObject und Ihre eigene Methode Validate() implementieren. Als Beispiel:

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");
        }
    }
}

Ist dies weiterhin die empfohlene Methode zum Hinzufügen einer benutzerdefinierten Überprüfung zu einem Modell in ASP.NET Core? Mit IValidatableObject wird ein System.ComponentModel.DataAnnotations Abhängigkeit.

26

Es gibt zwei Möglichkeiten, eine benutzerdefinierte Modellüberprüfung in ASP.NET Core durchzuführen:

  • Ein benutzerdefiniertes Attribut mit einer Unterklasse von ValidationAttribute. Dies ist nützlich, wenn Sie eine benutzerdefinierte Geschäftslogik auf eine bestimmte Modelleigenschaft mit einem Attribut anwenden möchten.
  • Implementierung von IValidatableObject für die Validierung auf Klassenebene. Verwenden Sie diese Option, wenn Sie ein gesamtes Modell auf einmal validieren müssen.

Die Dokumentation enthält Beispiele für beide. In Ihrem Fall wäre IValidatableObject wahrscheinlich der beste Ansatz.

24
Nate Barbettini