Tengo una acción que guarda un registro llamando al método Guardar de mi entidad BLL. La entidad se encarga de su propia validación interna y si se requiere un campo pero falla la validación porque un usuario no ingresó un valor, la entidad arroja un error. Capté ese error en mi acción y devuelvo la misma vista. El problema es que el error no se muestra en mi ValidationSummary.Errores del estado del modelo que no se muestran en la vista
Sí Me doy cuenta de que tengo la validación del modelo de vista por attibute con MVC pero esta entidad se usa en otro lugar y debe tener validación redundante si la UI no puede/no puede hacerlo, como en un trabajo de servicio por lotes.
Aquí es mi acción:
public ActionResult Edit(EntityModel model) {
if (ModelState.IsValid) {
var entity = new Entity(model.ID, model.Name, model.IsActive);
try {
entity.Save(User.Identity.Name);
return RedirectToAction("List");
}
catch (Exception ex) {
ModelState.AddModelError("", ex.Message);
}
}
return View(model);
}
Aquí está mi punto de vista:
@model ELM.Select.Web.Models.EntityModel
@{
ViewBag.Title = "Edit";
}
<h2>Edit</h2>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>DefermentTypeViewModel</legend>
@Html.HiddenFor(model => model.ID)
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.IsActive)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.IsActive)
@Html.ValidationMessageFor(model => model.IsActive)
</div>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
¿Por qué no el error agrego a ModelState se mostrará en mi ValidationSummary?
¡Eso fue todo! ¡Gracias! –
@CDSmith Me alegra ayudar. :) –
Sé que esto es viejo y todo, pero ¿soy el único confundido y realmente no creo que esta sea la respuesta? El parámetro de bool es 'excludePropertyErrors'. El método utilizado para agregar un error es 'ModelState.AddModelError', por lo que agregamos un error ** modelo ** y excluimos ** propiedad ** errores, entonces, ¿cuál es el problema? ¿Por qué mostrar los errores de ** propiedad ** muestra el error ** modelo ** agregado? Es un error en el resumen de validación o un método de modelo de estado mal llamado, ¿verdad? –