En el ejemplo NerdDinner de Professional ASP.NET MVC 1.0 hay un método para crear una nueva cena como se copia a continuación (página 89 de la versión gratuita de NerdDinner).
Allí comprueba que ModelState.IsValid sea verdadero. Parece verificar si el modelo es válido para la base de datos (es decir, captura conversiones de tipos de datos, como fechas con formato no válido, pero no reglas de negocios). ¿Es eso cierto?
Al enviar el formulario, si tiene un error en la fecha, ModelState.IsValid será falso y obtendrá un error, pero solo para la fecha porque AddRuleViolations nunca se ejecutó. Si elimina completamente la verificación de ModelState.IsValid, obtendrá todos los errores (debido a la excepción), incluida una marca en la fecha en que no es válida. Entonces, ¿por qué está ahí la comprobación de ModelState.IsValid? ¿Me estoy perdiendo de algo?
//
// 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);
}