时间:2019-03-08 标签:c#conditionalRequiredAttribute

c# conditional Required Attribute

如何将条件必需属性放入 class?我尝试了以下代码,但它不起作用。

public partial class Zone
{
    [RequireCondition ]
    public int LastCount { get; set; }
}
public class RequireCondition : ValidationAttribute
    {
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            var Zone = (Zone)validationContext.ObjectInstance;
            if (Zone.LastCount < 1)
            {
                return new ValidationResult("Last Count value must be greater than one.");
            }
            else
           {
                return ValidationResult.Success;
           }
        }
    }

试试这个?

public partial class Zone
{
    [RequireCondition(1)]
    public int LastCount { get; set; }
}

public class RequireConditionAttribute : ValidationAttribute
 {
     private int _comparisonValue;

     public RequireCondition(int comparisonValue)
     {
        _comparisonValue = comparisonValue;
     }

     protected override ValidationResult IsValid(object value, ValidationContext validationContext)
      {              
        if (value is int && (int)value < comparisonValue)
            {
              return new ValidationResult($"{validationContext.DisplayName} value must be greater than one.");
            }

            return ValidationResult.Success;
        }
    }