Sur l' exemple NerdDinner de Professional ASP.NET MVC 1.0, il existe une méthode pour créer un nouveau dîner copié ci-dessous (page 89 de la version gratuite de NerdDinner).
Là, il vérifie ModelState.IsValid pour true. Il semble vérifier si le modèle est valide pour la base de données (c'est-à-dire qu'il détecte les conversions de type de données, comme les dates au format invalide, mais pas les règles métier). Est-ce vrai?
Lors de la soumission du formulaire, si vous avez une erreur dans la date, ModelState.IsValid sera faux et vous obtiendrez une erreur, mais uniquement pour la date car AddRuleViolations n'a jamais été exécuté. Si vous supprimez complètement la vérification de ModelState.IsValid, vous obtiendrez toutes les erreurs (en raison de l'exception), y compris un marquage dans la date lorsqu'elle n'est pas valide. Alors, pourquoi la vérification de ModelState.IsValid y est-elle du tout? Est-ce que je manque quelque chose?
//
// POST: /Dinners/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Dinner dinner) {
if (ModelState.IsValid) {
try {
dinner.HostedBy = "SomeUser";
dinnerRepository.Add(dinner);
dinnerRepository.Save();
return RedirectToAction("Details", new {id = dinner.DinnerID });
} catch {
ModelState.AddRuleViolations(dinner.GetRuleViolations());
}
}
return View(dinner);
}