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 クラスを検証すると、期待どおりに失敗します。
何が問題なのですか?
ありがとう
ジリ