我使用 C# MVC,我有一个列表:
public List<int?> SomeList { get; set; }
当用户尝试输入字母而不是数字时,它会显示验证错误,因为列表的类型是 INT。
我想添加更多验证,例如列表项的“范围”(不仅)(它们都将具有相同的属性)。
我可以这样做吗?如何?
我使用 C# MVC,我有一个列表:
public List<int?> SomeList { get; set; }
当用户尝试输入字母而不是数字时,它会显示验证错误,因为列表的类型是 INT。
我想添加更多验证,例如列表项的“范围”(不仅)(它们都将具有相同的属性)。
我可以这样做吗?如何?
您始终可以自己实施验证,特别是如果您想根据各种标准实施任意验证
bool validate(int value){
if ((value < min) || (value > max))
return false;
}
您必须创建自己的继承自 的类List<T>
,然后您可以通过声明一个新方法来“隐藏” Add 方法:
class TestList : List<int>
{
public int MinValue { get; set; }
public int MaxValue { get; set; }
public TestList(int minValue, int maxValue)
{
this.MinValue = minValue;
this.MaxValue = maxValue;
}
public new void Add(int item)
{
if (item < MinValue || item > MaxValue)
throw new ArgumentException("Value is outside the acceptable range");
base.Add(item);
}
}
编辑:忘记在构造函数中抛出。
您可能想要查看rangeattribute的来源,并创建您自己的属性 ( http://msdn.microsoft.com/en-us/library/cc668224.aspx ),该属性将验证具有范围的通用列表。
你去吧。