Sur le NerdDinner exemple de Professionnel ASP.NET MVC 1.0, il y a une méthode pour créer un nouveau dîner comme copiée dans le soufflet (page 89 de la libre NerdDinner version).
Il vérifie ModelState.IsValid pour de vrai. Il semble à vérifier si le modèle est valide pour la base de données (qui est, il attrape les conversions de types de données, comme les dates avec format non valide, mais pas de règles de gestion). Est-ce vrai?
Lorsque vous soumettez le formulaire, si vous avez une erreur dans la date, ModelState.IsValid sera faux et vous en obtiendrez une erreur, mais seulement pour la date car AddRuleViolations n'a jamais été exécutée. Si vous décochez la case pour ModelState.IsValid complètement, alors vous aurez toutes les erreurs (en raison de l'exception), y compris le marquage de la date à laquelle il est invalide. Alors, pourquoi le vérifier ModelState.IsValid il à tous? Ai-je raté 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);
}