Min/Max-value validators in asp.net mvc

前端 未结 4 1834
时光说笑
时光说笑 2020-12-04 14:56

Validation using attributes in asp.net mvc is really nice. I have been using the [Range(min, max)] validator this far for checking values, like e.g.:



        
4条回答
  •  失恋的感觉
    2020-12-04 15:26

    A complete example of how this could be done. To avoid having to write client-side validation scripts, the existing ValidationType = "range" has been used.

    public class MinValueAttribute : ValidationAttribute, IClientValidatable
    {
        private readonly double _minValue;
    
        public MinValueAttribute(double minValue)
        {
            _minValue = minValue;
            ErrorMessage = "Enter a value greater than or equal to " + _minValue;  
        }
    
        public MinValueAttribute(int minValue)
        {
            _minValue = minValue;
            ErrorMessage = "Enter a value greater than or equal to " + _minValue;
        }
    
        public override bool IsValid(object value)
        {
            return Convert.ToDouble(value) >= _minValue;
        }
    
        public IEnumerable GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
        {
            var rule = new ModelClientValidationRule();
            rule.ErrorMessage = ErrorMessage;
            rule.ValidationParameters.Add("min", _minValue);
            rule.ValidationParameters.Add("max", Double.MaxValue);
            rule.ValidationType = "range";
            yield return rule;
        }
    
    }
    

提交回复
热议问题