I'm trying to validate a generic list e.g List<Sales> so that the list should contain at least one item added via check boxes.
Here is how I've tried to work this:
public class SalesViewModel :IValidatableObject
{
[Required]
public List<Sales> AllSales{ get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (AllSales.Length == 0)
yield return new ValidationResult("Please pick one sales item");
}
}
Just want to know if this is the right approach to this kind of scenario.
You can also create a custom validation attribute, similar to the following:
public class EnsureOneItemAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
var list = value as IList;
if (list != null)
{
return list.Count > 0;
}
return false;
}
}
And then apply it like:
[EnsureOneItemAttribute (ErrorMessage = "Please pick one sales item")]
public List<Sales> AllSales{ get; set; }
Simplest version:
public class SalesViewModel
{
[Required, MinLength(1, ErrorMessage = "Please pick one sales item")]
public List<Sales> AllSales{ get; set; }
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With