2012-08-30 8 views
6

trat ein Problem mit der Validierung komplexer Klassen in ASP.NET MVC4 mit DataAnnotation.Validierung von komplexen Klassen in ASP.NET MVC4 schlägt fehl

Lassen Sie uns ein folgendes Modell haben (vereinfacht)

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; } 
} 

Dann habe ich versuchen, eine Instanz von diesem Modell in meinem Controller zu überprüfen:

// 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} 

Validierung von orderModel sollte als cust.UserName scheitern hat nur 1 Zeichen, aber 3 werden vom Modell benötigt. Gleiches gilt für cust.DisplayName. Wenn ich jedoch eine reine Customer-Klasse validiere, schlägt sie wie erwartet fehl.

Jede Idee, was falsch ist?

dank

Jiri

+1

Soweit ich Sie wissen, kann geschachtelte Objekte nicht validieren, vielleicht einen benutzerdefinierten Validator verwenden – saj

+1

Es scheint, dass die Überprüfung der Datenanmerkung die Überprüfung geschachtelter Objekte nicht standardmäßig ausführt. Similar post hier http://stackoverflow.com/questions/2493800/how-can-i-tell-the-data-annotations-validator-to-also-validate-complex-child-pro –

Antwort

2

DataAnnotations werden nicht in Ihre Objekte auf seine eigene graben. Sie haben zwei Möglichkeiten:

1 - eine benutzerdefinierte Validator schreiben Kind Eigenschaften

2 - eine Ansicht Modell mit den einfachen Eigenschaften mit besiedelten erstellen mit Daten Anmerkungen dekoriert

Verwandte Themen