webapi validaciones valid sirve que para net mvc isvalid español asp addmodelerror asp.net-mvc validation nerddinner

validaciones - ¿Para qué sirve ModelState.IsValid en ASP.NET MVC en NerdDinner?



para que sirve el validationsummary (3)

De la Errata: ModelState.AddRuleViolations(dinner.GetRuleViolations());

Debiera ser:

ModelState.AddModelErrors(dinner.GetRuleViolations());

Referencia: http://www.wrox.com/WileyCDA/WroxTitle/Professional-ASP-NET-MVC-1-0.productCd-0470384611,descCd-ERRATA.html

En el ejemplo de NerdDinner de Professional ASP.NET MVC 1.0, existe un método para crear una nueva cena como se reproduce a continuación (página 89 de la versión gratuita de NerdDinner).

Allí verifica ModelState.IsValid por verdadero. Parece comprobar si el modelo es válido para la base de datos (es decir, capta las conversiones de tipos de datos, como las fechas con formato no válido, pero no las reglas comerciales). ¿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 por completo el cheque 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é el cheque para ModelState.IsValid existe? ¿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); }


Sí, Jared y Kelly Orr tienen razón. Uso el siguiente código como en edit exception.

foreach (var issue in dinner.GetRuleViolations()) { ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage); }

en lugar de

ModelState.AddRuleViolations(dinner.GetRuleViolations());


ModelState.IsValid le informa si se han agregado errores de modelo a ModelState .

El encuadernador de modelo predeterminado agregará algunos errores para los problemas de conversión de tipo básico (por ejemplo, pasar un número no para algo que es un "int"). Puede completar ModelState de forma más completa en función del sistema de validación que esté utilizando.

El modelo de DataAnnotations modelo de DataAnnotations rellenará el estado del modelo con los errores de validación tomados de los atributos de DataAnnotations en su modelo.