4

私はこのコードを持っています:

[Required]
public List<string> myStringList { get; set; }

残念ながら、それは機能しません。バリデーターはそれを完全に無視します。

その上、これはうまくいきます:

[Required]
public string myString { get; set; }

および DateTimes も正常に機能します。明らかに、問題はバリデータではなく、注釈にあります。問題は、リストにデータ注釈をどのように設定すればよいですか?

4

2 に答える 2

8

独自のデータ注釈属性を作成します。粗い例:

public class ListHasElements : ValidationAttribute
{
   public override bool IsValid(List mylist)
   {
      if(mylist == null)
         return false;

      return mylist.Any();   
   }
}

次に、次のように使用します。

[ListHasElements(ErrorMessage = "List must contain an element")]
public List<string> myStringList { get; set; }
于 2013-07-03T13:57:17.057 に答える
0

クライアント側の検証を実行する場合は、@DGibbs が指定したものに加えて、カスタム クラス属性で IClientValidatable インターフェイスを継承し、GetClientValidationRules メソッドをオーバーライドする必要があります。これにより、JavaScript 関数のようなクライアント スクリプトと、それらのメソッド内のパラメーターが登録されます。この例これを見てください

于 2013-07-03T14:05:33.653 に答える