Fundo:
As validações de modelo são necessárias para garantir que os dados recebidos que recebemos são válidos e corretos para que possamos fazer o processamento posterior com esses dados. Podemos validar um modelo em um método de ação. Os atributos de validação integrados são Compare, Range, RegularExpression, Required, StringLength. No entanto, podemos ter cenários em que exigimos atributos de validação além dos integrados.
Atributos de validação personalizados
public class EmployeeModel
{
[Required]
[UniqueEmailAddress]
public string EmailAddress {get;set;}
public string FirstName {get;set;}
public string LastName {get;set;}
public int OrganizationId {get;set;}
}
Para criar um atributo de validação personalizado, você terá que derivar essa classe de ValidationAttribute.
public class UniqueEmailAddress : ValidationAttribute
{
private IEmployeeRepository _employeeRepository;
[Inject]
public IEmployeeRepository EmployeeRepository
{
get { return _employeeRepository; }
set
{
_employeeRepository = value;
}
}
protected override ValidationResult IsValid(object value,
ValidationContext validationContext)
{
var model = (EmployeeModel)validationContext.ObjectInstance;
if(model.Field1 == null){
return new ValidationResult("Field1 is null");
}
if(model.Field2 == null){
return new ValidationResult("Field2 is null");
}
if(model.Field3 == null){
return new ValidationResult("Field3 is null");
}
return ValidationResult.Success;
}
}
Espero que isto ajude. Felicidades !
Referências