Im NerdDinner- Beispiel von Professional ASP.NET MVC 1.0 gibt es eine Methode zum Erstellen eines neuen Abendessens als unten kopiert (Seite 89 der kostenlosen NerdDinner-Version).
Dort prüft es ModelState.IsValid auf true. Es scheint zu prüfen, ob das Modell für die Datenbank gültig ist (dh es erfasst Datentypkonvertierungen, z. B. Daten mit ungültigem Format, jedoch keine Geschäftsregeln). Ist das wahr?
Wenn Sie beim Senden des Formulars einen Fehler im Datum haben, ist ModelState.IsValid falsch und Sie erhalten einen Fehler zurück, jedoch nur für das Datum, da AddRuleViolations nie ausgeführt wurde. Wenn Sie die Prüfung für ModelState.IsValid vollständig entfernen, werden alle Fehler (aufgrund der Ausnahme) angezeigt, einschließlich einer Markierung im Datum, an dem sie ungültig ist. Warum wird dann überhaupt nach ModelState.IsValid gesucht? Vermisse ich etwas
//
// 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);
}