Je suis en train de valider un modèle contenant d'autres objets avec des règles de validation en utilisant les attributs de System.ComponentModel.DataAnnotations esperait l'implémentation par défaut MVC suffirait:support pour le modèle imbriqué et validation de classe avec ASP.NET MVC 2.0
var obj = js.Deserialize(json, objectInfo.ObjectType);
if(!TryValidateModel(obj))
{
// Handle failed model validation.
}
L'objet est composé de types primitifs mais contient également d'autres classes qui utilisent également DataAnnotications. Comme si:
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; }
}
Le problème est que la validation ASP.NET MVC ne va que vers le bas niveau 1 et évalue uniquement les propriétés de la classe de haut niveau, comme on peut le lire sur digitallycreated.net/Blog/54/deep -inside-asp.net-mvc-2-modèle-métadonnées-et-validation.
Est-ce que quelqu'un connaît une solution élégante à cela? J'ai essayé xVal, mais ils semblent utiliser un modèle non récursif (http://blog.stevensanderson.com/2009/01/10/xval-a-validation-framework-for-aspnet-mvc/).
Quelqu'un doit avoir rencontré ce problème avant d'avoir raison? Imbrication d'objets dans votre modèle ne semble pas si étrange si vous concevez un service Web.
ModelState.IsValid pour une raison quelconque est aussi des objets imbriqués valider, contrairement TryValidateModel. Déroutant. – JustAMartin