- Quiero enviar un mensaje a ID de usuario = 3 por ir a/myController/Mensaje/3
- Esto ejecuta Mensaje() [obtener] acción, entro en algún texto en el área de texto y haga clic en Guardar para publicar el formulario
- Mensaje() [publicar] la acción guarda los cambios, restablece el valor de SomeText a cadena vacía y regresa a la vista.
En este punto, espero que el área de texto para estar vacío porque he puesto ViewData [ "SomeText"] a String.EmptyRestablece el valor del área de texto después de la sumisión de la forma
¿Por qué es valor del área de texto no se actualiza a cadena vacía después de la acción de correos?
Aquí están las acciones:
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Message(int ID)
{
ViewData["ID"] = ID;
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Message(int ID, string SomeText)
{
// save Text to database
SaveToDB(ID, SomeText);
// set the value of SomeText to empty and return to view
ViewData["SomeText"] = string.Empty;
return View();
}
y la vista correspondiente:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<% using (Html.BeginForm())
{ %>
<%= Html.Hidden("ID", ViewData["ID"])%>
<label for="SomeText">SomeText:</label>
<%= Html.TextArea("SomeText", ViewData["SomeText"]) %>
<input type="submit" value="Save" />
<% } %>
</asp:Content>
Creo que esto es mejor que simplemente borrar el ModelState. Si estás haciendo una publicación, entonces realmente no necesitas más que un simple mensaje. Si sientes la necesidad de devolver un modelo completo, entonces probablemente deberías estar haciendo un get en primer lugar. También mira en el patrón PRG; puede aclarar esto un poco.Esto también puede corregir ese molesto mensaje del navegador que a veces puede obtener al actualizar y le pregunta si desea volver a publicar un formulario. –
Estoy haciendo exactamente esto, y está trabajando en la mayoría de mis formularios, excepto en algunos (2 o 3 tal vez). ¿Cómo es que la página sigue representando los valores de 'ModelState' incluso después de publicarlo y usando' RedirectToAction ("guardar", nuevo {id = 0}); 'al final de' Guardar (MyModel vm) '? ¿Qué puedo hacer para restablecer el formulario después de publicarlo que no sea 'ModelState.Clear()'? – barnes
Encontré la solución. 'UpdateTargetId' de' Ajax.BeginForm' se suministró con el 'Id' incorrecto. – barnes