为特定值编写 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;
}
}
请帮我找到问题。谢谢。
此行
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;
}