2012-08-30 22 views
6

se encontró un problema con la validación de clases complejas en ASP.NET MVC4 utilizando DataAnnotation.La validación de clases complejas en ASP.NET MVC4 falla

Vamos a tener un modelo siguiente (simplificado)

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

Entonces intenta validar una instancia de este modelo en mi controlador:

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

Validación de orderModel falle como el cust.UserName tiene solo 1 carácter, pero el modelo requiere 3. Lo mismo se aplica a cust.DisplayName. Pero cuando valido una clase pura de Cliente, falla como se esperaba.

¿Alguna idea de qué pasa?

gracias

Jiri

+1

Por lo que yo te conozco no puede validar objetos anidados así, tal vez use un validador personalizado – saj

+1

Parece que la validación de la anotación de datos no ejecuta validación de objetos anidados de forma predeterminada. Publicación similar aquí http://stackoverflow.com/questions/2493800/how-can-i-tell-the-data-annotations-validator-to-also-validate-complex-child-pro –

Respuesta

2

DataAnnotations no se hundan en los objetos en sí mismo. Usted tiene dos opciones:

1 - Escribir un validador personalizado para comprobar propiedades secundarias

2 - Crear un modelo de vista con poblada con las propiedades simples decorados con anotaciones de datos

Cuestiones relacionadas