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?

¿Fue útil?

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)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top