mensajes de éxito en lugar de mensajes de error de estado modelo
-
22-09-2019 - |
Pregunta
Para los mensajes de error, fallos de validación etc tener
ModelState.AddErrorMessage("Fool!");
Pero, ¿Dónde poner las respuestas de éxito como "Usted trasladado con éxito una gran cantidad de dinero a su ex." + "Su balance es ahora cero". Todavía quiero configurarlo en el nivel de controlador y preferiblemente en forma clave-valor, del mismo modo que ErrorMessages pero sin invalidar el ModelState.
¿Cómo se hace generalmente? ViewData?
Solución
Me poblar TempData [ "éxito"] (o lo que sea clave que desea darlo) con el mensaje que quiero mostrar dentro del controlador y, a continuación redirección adecuada (por ejemplo, si editar un usuario, vuelvo a dirigir de nuevo a la Lista de usuarios). Esto se basa en la POST / redirección / patrón GET -. Que es una práctica bien de todos modos
TempData["success"] = "Your Balance is now zero";
En la página maestra que tiene una sección que comprueba esa variable y muestra el mensaje en un buen labrado div. Algo así como (puede no ser 100% correcto):
<% if(TempData["success"] != null) { %>
<div id="SuccessMessage"><%= Html.Encode(TempData["success"]) %><div>
<% } %>
Otros consejos
supongo que se podría comprobar la ModelState y establecer una variable en su modelo ...
public ActionResult MyAction(MyEntity model)
{
//Here would be some validation, which returns with ModelState errors
//Now set the validity of the modelstate as the IsValid property in your entity
model.IsValid = ModelState.IsValid;
return View(model);
}
En su opinión ...
<% if(Model.IsValid) { %>
<p>You successfully transfered your balance to your ex.</p>
<% } %>
Editar Dada su pregunta actualizada, creo que usted está buscando en tomar un enfoque equivocado. Me gustaría ir junto con las otras respuestas y seguir un PRG patrón . Esto sin duda tiene más sentido que se trata de añadir un error de falso.
Se debe poner en práctica algo así como el patrón de POST / redirección / GET y "redirección" a otra vista al final de sus métodos de acción después de que todas las validaciones se verificaron y todo muy bien ejecutados. Puede pasar toda instancia de objeto a la vista de destino o simplemente pasar el mensaje de texto sin formato, o se puede extraer el texto en el propio destino Vista desde web.config o desde un archivo de recursos.
Por ejemplo, tengo una vista en Shared carpeta con el nombre "ChangeSuccess.aspx" a la que vuelvo a dirigir a todos mis ediciones exitosas y crea.
"redirección" como esto
return View("ChangeSuccess", objectInstance);
(nota: en realidad no redirección, ver comentarios)