C# - 验证属性

时间:2012-04-24 12:33:44

标签: c# validation

我使用C#MVC, 我有一个清单:

 public List<int?> SomeList { get; set; }  

当用户尝试输入字母而不是数字时,它会显示验证错误,因为列表的类型为INT。

我想添加更多验证,例如&#34; range&#34; (不仅)列表的项目(所有这些项目都具有相同的属性)。

我能这样做吗?怎么样?

3 个答案:

答案 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);
    }
}

编辑:忘了投入构造函数。