I have the following viewmodel definition
public class AccessRequestViewModel
{
public Request Request { get; private set; }
public SelectList Buildi
Darin's answer is good but the version below will automatically give you a useful error message.
public class MinimumElementsAttribute : ValidationAttribute
{
private readonly int minElements;
public MinimumElementsAttribute(int minElements)
{
this.minElements = minElements;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var list = value as IList;
var result = list?.Count >= minElements;
return result
? ValidationResult.Success
: new ValidationResult($"{validationContext.DisplayName} requires at least {minElements} element" + (minElements > 1 ? "s" : string.Empty));
}
}
Usage:
[MinimumElements(1)]
public List Customers {get;set}
[MinimumElements(2)]
public List Addresses {get;set}
Error message: