natknął się na problem z sprawdzaniem złożonych klas w ASP.NET MVC4 przy użyciu DataAnnotation.Sprawdzanie poprawności klas złożonych w ASP.NET MVC4 nie powiodło się
Rzućmy następujący model (uproszczony)
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; }
}
Wtedy staram się potwierdzić wystąpienie tego modelu w moim kontrolera:
// 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}
Walidacja orderModel powinien zawieść jako cust.UserName ma tylko 1 znak, ale 3 są wymagane przez Model. To samo dotyczy cust.DisplayName. Ale kiedy potwierdzam czystą klasę klienta, to zawiedzie zgodnie z oczekiwaniami.
Każdy pomysł, co jest nie tak?
dzięki
Jiri
miarę znam cię nie można sprawdzić poprawności takich zagnieżdżonych obiektów, może użyć niestandardowego sprawdzania poprawności. – saj
Wygląda na to, że sprawdzanie adnotacji danych nie uruchamia domyślnie sprawdzania poprawności zagnieżdżonych obiektów. Podobny post tutaj http://stackoverflow.com/questions/2493800/how-can-i-tell-the-data-annotations-validator-to-also-validate-complex-child-pro –