Estoy tratando de validar un modelo que contiene otros objetos con las reglas de validación utilizando los atributos System.ComponentModel.DataAnnotations estaba esperando la implementación MVC por defecto sería suficiente:Soporte para el modelo anidado y validación clase con ASP.NET MVC 2.0
var obj = js.Deserialize(json, objectInfo.ObjectType);
if(!TryValidateModel(obj))
{
// Handle failed model validation.
}
El objeto está compuesto de tipos primitivos pero también contiene otras clases que también usan DataAnnotications. De este modo:
public class Entry
{
[Required]
public Person Subscriber { get; set; }
[Required]
public String Company { get; set; }
}
public class Person
{
public String FirstName { get; set;}
[Required]
public String Surname { get; set; }
}
El problema es que la validación ASP.NET MVC única baja 1 nivel y sólo se evalúan las propiedades de la clase de nivel superior, como puede leerse en digitallycreated.net/Blog/54/deep -inside-asp.net-mvc-2-model-metadata-y-validación.
¿Alguien conoce una solución elegante para esto? He intentado xVal, pero parecen usar un patrón no recursivo (http://blog.stevensanderson.com/2009/01/10/xval-a-validation-framework-for-aspnet-mvc/).
Alguien debe haber encontrado este problema antes ¿no? Anidar objetos en su modelo no parece tan extraño si está diseñando un servicio web.
ModelState.IsValid por alguna razón está validando objetos anidados También, a diferencia de TryValidateModel. Confuso. – JustAMartin