我使用C#MVC, 我有一个清单:
public List<int?> SomeList { get; set; }
当用户尝试输入字母而不是数字时,它会显示验证错误,因为列表的类型为INT。
我想添加更多验证,例如&#34; range&#34; (不仅)列表的项目(所有这些项目都具有相同的属性)。
我能这样做吗?怎么样?
答案 0 :(得分:0)
您可能希望查看rangeattribute的来源,并创建自己的属性(http://msdn.microsoft.com/en-us/library/cc668224.aspx),以验证带有范围的通用列表。
你去。
答案 1 :(得分:0)
您始终可以自己实施验证,尤其是在您希望对各种条件实施任意验证时
bool validate(int value){
if ((value < min) || (value > max))
return false;
}
答案 2 :(得分:0)
您必须创建自己的继承自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);
}
}
编辑:忘了投入构造函数。