0

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;
    }
}

問題を見つけるのを手伝ってください。ありがとう。

4

1 に答える 1

1

この行

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;
        }
于 2013-01-24T05:31:51.403 に答える