2012-08-30 12 views
6

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

+1

miarę znam cię nie można sprawdzić poprawności takich zagnieżdżonych obiektów, może użyć niestandardowego sprawdzania poprawności. – saj

+1

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 –

Odpowiedz

2

DataAnnotations nie będzie kopać w swoich obiektach na jego rękę. Masz dwie możliwości:

1 - zapis niestandardową walidatora do sprawdzenia właściwości podrzędne

2 - Tworzenie modelu widok z wypełniane prostych właściwości ozdobione adnotacji danych

Powiązane problemy