- voglio inviare un messaggio a userID = 3 andando a/MyController/Messaggio/3
- Questo esegue Message() [ottenere] azione, entro in un testo in l'area di testo e fare clic su Salva per inviare il modulo
- L'azione Message() [post] salva le modifiche, reimposta il valore di SomeText per svuotare la stringa e torna alla visualizzazione.
A questo punto mi aspetto l'area di testo per essere vuoto perchè ho impostato Viewdata [ "someText"] per string.EmptyRipristinare il valore del textarea dopo modulo di presentazione
Perché valore dell'area di testo non aggiornato alla stringa vuota dopo l'azione post?
Qui ci sono le azioni:
[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();
}
e la corrispondente vista:
<%@ 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>
Penso che sia meglio che cancellare il ModelState. Se stai facendo un post, allora non hai davvero bisogno di più di un semplice messaggio che ritorna. Se senti la necessità di restituire un modello completo, probabilmente dovresti fare un get in primo luogo. Guarda anche nello schema PRG; potrebbe chiarire un po 'questo.Questo può anche risolvere quel fastidioso messaggio del browser che a volte si può ottenere quando si aggiorna e chiede se si desidera re-postare un modulo. –
Sto facendo esattamente questo, e sta lavorando sulla maggior parte delle mie forme tranne alcune (forse 2 o 3). Come mai la pagina sta ancora restituendo i valori da 'ModelState' anche dopo averla postata e usando' RedirectToAction ("save", new {id = 0}); 'alla fine di' Save (MyModel vm) '? Cosa posso fare per resettare il modulo dopo averlo postato diverso da 'ModelState.Clear()'? – barnes
Ho trovato la soluzione. 'UpdateTargetId' di' Ajax.BeginForm' è stato fornito con 'Id' errato. – barnes