J'ai un formulaire et le seul élément requis est le nom du client. Donc, dans mon modèle, j'ai:ASP.NET MVC 3 ModelState.IsValid retourne toujours vrai pour les données codées JSON en utilisant Ext.Direct
[DisplayName("Customer name*:")]
[Required]
public string CustomerName
{ get; set; }
Auparavant, je faisais un post HTML et tout fonctionnait bien, y compris la validation. Maintenant, j'ai "ajaxifié" le formulaire, en utilisant Ext.direct.mvc (http://code.google.com/p/ext-direct-mvc/), ce qui est un fait significatif, et en affichant les données au format Json et les données sont postées avec succès.
Quand je mets un point d'arrêt dans mon code (actuellement modifié à des fins de débogage):
[DirectInclude]
[HttpPost]
public ActionResult SaveOrUpdateOrderLines(CustomerOrderModel customerOrderModel)
{
if (!ModelState.IsValid)
{
return ModelState.JsonValidation();
}
return null;
Je vois que le CustomerOrderModel.CustomerOrderHeader.CustomerName = ""
Mais le ModelState.IsValid est vrai.
Maintenant, pour quelques-unes des choses que j'ai essayé:
J'ai inséré le code suivant, juste avant de vérifier ModelState.IsValid, afin de veiller à ce que CustomerName = null
customerOrderModel.CustomerOrderHeader.CustomerName = null;
J'ai essayé d'utiliser TryUpdateModel (customerOrderModel) mais je reçois le message d'erreur suivant:
TryUpdateModel a lancé une exception de type 'System.MissingMethodException'
J'ai essayé de modifier les données JSON donc que la "racine" "CustomerOrderHeader" a été renommée "customerOrderModel" pour correspondre au paramètre.
Rien de tout cela n'a fonctionné. Alors, que pourrais-je faire de mal que la validation ne fonctionne plus? Quelles mesures puis-je prendre pour déboguer le problème?
EDIT pour counsellorBen
EDIT 2 pour counsellorben
Ok J'ai trouvé la réponse qui est détaillée ici http://stackoverflow.com/questions/4465432/asp-net-mvc-2-controllers-tryvalidate-doesnt-validate-the-list-items-within/ 4489226 # comment10011080_4489226. – DavidS