net mvc for exclude custom attribute asp c# asp.net-core asp.net-core-mvc asp.net-core-1.0

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.