c# - mostrar - mensajes en mvc
Mensajes de éxito en lugar de mensajes de error de estado modelo (3)
Debe implementar algo como el patrón POST / Redirect / GET y "redirigir" a otra vista al final de sus métodos de acción después de que todas las validaciones hayan sido verificadas y todo se haya ejecutado correctamente. Puede pasar una instancia de objeto completa a la vista de destino o simplemente pasa un mensaje de texto sin formato, o puede extraer el texto en la Vista de destino desde web.config o desde el archivo de recursos.
Por ejemplo, tengo una vista en la carpeta Compartida llamada "ChangeSuccess.aspx" a la que redirijo para todas mis ediciones y creaciones exitosas.
Usted "redirecciona" como este
return View("ChangeSuccess", objectInstance);
(nota: en realidad no redirige, ver comentarios)
Para mensajes de error, fallas de validación, etc.
ModelState.AddErrorMessage("Fool!");
Pero, ¿dónde coloca las respuestas de éxito como "Usted transfirió con éxito una gran cantidad de dinero a su ex". + "Tu saldo es ahora cero". Todavía quiero establecerlo en el nivel del controlador y preferiblemente de manera clave-valor, de la misma manera que los mensajes de error pero sin invalidar el estado del modelo.
¿Cómo se hace esto generalmente? ¿Ver datos?
Rellenaré TempData ["éxito"] (o la clave que quiera darle) con el mensaje que quiero mostrar en el controlador, luego redirigir apropiadamente (por ejemplo, si edito un usuario, redirigiré nuevamente a la lista de usuarios) . Esto se basa en el patrón POST / Redirect / GET, que es una buena práctica de todos modos.
TempData["success"] = "Your Balance is now zero";
En la página maestra tengo una sección que verifica esa variable y muestra el mensaje en un div de estilo agradable. Algo como (puede que no sea 100% correcto):
<% if(TempData["success"] != null) { %>
<div id="SuccessMessage"><%= Html.Encode(TempData["success"]) %><div>
<% } %>
Supongo que podría comprobar el estado del modelo 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>
<% } %>
Edit: Dada tu pregunta actualizada, creo que estás pensando en tomar el enfoque equivocado. Me gustaría estar de acuerdo con las otras respuestas y seguir un patrón de PRG . Esto definitivamente tiene más sentido que intentar agregar un error falso.