为特定值编写 MVC 自定义验证

本文关键字:MVC 自定义 验证 | 更新日期: 2023-09-27 17:55:29

我正在编写一个MVC自定义验证。它将对特定值的列表有效。例:

[Values(30, 60, 120)]
public int SelectTop { get; set; }

但它不适用于我的验证。这是代码:

public class ValuesAttribute : ValidationAttribute
{
    public object[] Values { get; private set; }
    public Type Type { get; private set; }
    public ValuesAttribute(params int[] values)
        : this(typeof(int), values)
    {
    }
    public ValuesAttribute(params double[] values)
        : this(typeof(double), values)
    {
    }
    public ValuesAttribute(Type type, params object[] values)
    {
        this.Type = type;
        this.Values = values;
    }
    public override bool IsValid(object value)
    {
        foreach (var v in this.Values)
        {
            if (object.Equals(v, value))
            {
                return true;
            }
        }
        return false;
    }
}

请帮我找到问题。谢谢。

为特定值编写 MVC 自定义验证

此行

public object[] Values { get; private set; }

将值数组存储在其中,以便 Values[0] = int[3]

将代码更改为:

   public override bool IsValid(object value) {
            int[] valueSet = this.Values[0] as int[];
            if (valueSet == null) {
                throw new Exception("Values must be provided");
            }
            foreach (var v in valueSet) {
                if (object.Equals(v, value)) {
                    return true;
                }
            }
            return false;
        }