ViewModel validation for a List

前端 未结 7 1598
梦谈多话
梦谈多话 2020-11-28 02:54

I have the following viewmodel definition

public class AccessRequestViewModel
{
    public Request Request { get; private set; }
    public SelectList Buildi         


        
7条回答
  •  醉梦人生
    2020-11-28 03:22

    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:

    • Customers requires at least 1 element
    • Addresses requires at least 2 elements

提交回复
热议问题