c# - for - custom validation mvc
¿Cómo implemento la validación de modelo personalizado en ASP.NET Core? (1)
En versiones anteriores de ASP.NET MVC, la forma de agregar validación personalizada a su modelo era mediante la implementación de IValidatableObject
y la implementación de su propio método Validate()
. Como ejemplo:
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");
}
}
}
¿Sigue siendo esta la forma recomendada de agregar validación personalizada a un modelo en ASP.NET Core? El uso de IValidatableObject
toma una dependencia de System.ComponentModel.DataAnnotations
.
Hay dos formas de hacer una validación de modelo personalizado en ASP.NET Core:
- Un atributo personalizado subclasificado de
ValidationAttribute
. Esto es útil cuando desea aplicar lógica comercial personalizada a una propiedad particular del modelo con un atributo. - Implementando
IValidatableObject
para la validación de nivel de clase. Use esto en su lugar cuando necesite hacer la validación en un modelo completo a la vez.
La documentación tiene ejemplos de ambos. En su caso, IValidatableObject
probablemente sea el mejor enfoque.