0

私はC#MVCを使用しています。リストがあります:

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

ユーザーが数字の代わりに文字を入力しようとすると、リストのタイプが INT であるため、検証エラーが表示されます。

リストの項目の「範囲」(だけでなく) などの検証をさらに追加したい(それらはすべて同じ属性を持つ)。

それをしてもいいですか?どのように?

4

3 に答える 3

0

特にさまざまな基準で任意の検証を実装する場合は、いつでも自分で検証を実装できます。

bool validate(int value){
    if ((value < min) || (value > max))
        return false;
}
于 2012-04-24T12:46:38.627 に答える
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);
    }
}

編集:コンストラクターを投入するのを忘れました。

于 2012-04-24T12:48:38.843 に答える
0

rangeattributeのソースを調べて、範囲を持つ汎用リストを検証する独自の属性 ( http://msdn.microsoft.com/en-us/library/cc668224.aspx ) を作成することをお勧めします。

いこうぜ。

于 2012-04-24T12:36:44.717 に答える