模型WebApi上的验证属性?

时间:2019-05-03 08:26:35

标签: validation asp.net-web-api model attributes

我想知道是否可以向输入模型的属性添加验证属性。 该属性是一个枚举,我的目标是限制所考虑的属性的枚举值。

有可能吗?

这是我想做的事情:

 public enum EnumExample
{
    A,
    B,
    C,
    D,
    E,
    F,
    G
}

在第一个模型中,我只想为TypeType属性插入值A,B,C

public class GetABC
{
    ***[Range (A,B,C)]***
    public EnumExample TypeClass { get; set; }
}

我只想为TypeType1属性插入值E,F,G

public class GetEFG
{
    ***[Range (E,F,G)]***
    public EnumExample TypeClass1 { get; set; }
}

有可能吗?

可以使用什么属性?

仅使用Regex吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以添加自己的自定义属性验证器,也许还可以以这种方式验证值?

类似的东西:

public class EnumValidatorAttribute : ValidationAttribute
    {
        private readonly string[] _values;

        public EnumValidatorAttribute(params string[] values)
        {
            _values = values;
        }

        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            if (_values.Contains(value))
                return ValidationResult.Success;

            return new ValidationResult("Not a valid Enum value");
        }
    }

然后使用,就像:

[EnumValidator("Value1", "Value2")]
public myEnum MyEnumProperty {get;set;}