6

DataAnnotation を使用した ASP.NET MVC4 の複雑なクラスの検証で問題が発生しました。

次のモデルを用意しましょう(簡略化)

public class Customer
{
   [Required]
   [StringLength(8, MinimumLength = 3)]        
   public string UserName { get; set; }

   [Required]
   [StringLength(8, MinimumLength = 3)]
   public string DisplayName { get; set; }
}


public class Order
{
    public Customer customer { get; set; }
}

次に、コントローラーでこのモデルのインスタンスを検証しようとします。

// CREATE A DUMMY INSTANCE OF THE MODEL 
Customer cust = new Customer();
cust.UserName = "x";
cust.DisplayName = "x";

Order orderModel = new Order();
orderModel.customer = cust;

// VALIDATE MODEL
TryValidateModel(orderModel); // ModelState.IsValid is TRUE (which is incorrect)
TryValidateModel(cust); // ModelState.IsValid is FALSE (whic is correct}

cust.UserName には 1 文字しかないため、orderModel の検証は失敗するはずですが、モデルには 3 文字が必要です。同じことが cust.DisplayName にも当てはまります。しかし、純粋な Customer クラスを検証すると、期待どおりに失敗します。

何が問題なのですか?

ありがとう

ジリ

4

1 に答える 1

2

DataAnnotations は、それ自体でオブジェクトを掘り下げることはありません。次の 2 つの選択肢があります。

1 -- 子プロパティをチェックするカスタム バリデータを作成する

2--データ注釈で装飾された単純なプロパティが設定されたビュー モデルを作成します。

于 2012-08-30T18:30:38.717 に答える