How do I implement custom model validation in ASP.NET Core?
21,247
There are two ways to do custom model validation in ASP.NET Core:
- A custom attribute subclassed from
ValidationAttribute
. This is useful when you want to apply custom business logic to a particular model property with an attribute. - Implementing
IValidatableObject
for class-level validation. Use this instead when you need to do validation on an entire model at once.
The documentation has examples of both. In your case, IValidatableObject
would probably be the best approach.
Author by
Justin Helgerson
Updated on June 06, 2020Comments
-
Justin Helgerson almost 4 years
In previous versions of ASP.NET MVC the way to add custom validation to your model was by implementing the
IValidatableObject
and implementing your ownValidate()
method. As an example: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"); } } }
Is this still the recommended way of adding custom validation to a model in ASP.NET Core? Using
IValidatableObject
takes on aSystem.ComponentModel.DataAnnotations
dependency. -
Justin Helgerson almost 8 yearsI was looking for a custom validation section in their docs, but it looks like I missed it. Thanks!