came across an issue with validation of complex classes in ASP.NET MVC4 using DataAnnotation.
Let's have a following model (simplified)
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; }
}
Then I try to validate an instance of this model in my controller:
// 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}
Validation of orderModel should fail as the cust.UserName has only 1 character, but 3 are required by the Model. Same applies to cust.DisplayName. But when I validate a pure Customer class then it fails as expected.
Any idea what's wrong?
thanks
Jiri