In un certo numero di situazioni ho riscontrato un problema in cui ho un modello creato sul server come risultato di valori postati. Al momento dell'elaborazione del modello, alcuni valori del modello vengono modificati e quindi nuovamente visualizzati sulla pagina. C'è un modo semplice per sovrascrivere il comportamento che fa sì che il framework MVC utilizzi il valore POSTed invece del valore del mio modello.MVC3: Come forzare Html.TextBoxFor a utilizzare il valore del modello anziché il valore POSTed
Esempio:
Modello
public class MyModel {
public string Value1 { get; set; }
}
controller
public MyController : Controller {
public ActionResult MyAction() {
var model = new MyModel();
model.Value1 = "OldValue";
return View(model);
}
[HttpPost]
public ActionResult MyAction(MyModel model) {
model.Value1 = "NewValue";
return View(model);
}
}
View
@using(Html.BeginForm("MyAction", "My", FormMethod.Post) {
@Html.TextBoxFor(m => m.Value1)
<input type="submit"/>
}
Quando questa pagina viene caricato, la casella di testo conterrà "OldValue". Dopo aver fatto clic su Invia, la casella di testo contiene ancora "OldValue" poiché è ciò che è stato inviato POST al server, ma voglio che crei la seconda pagina (dopo il POST) con il valore dal modello (NewValue).
C'è un modo semplice per dire a MVC di comportarsi in questo modo? Non sono sicuro di cosa dovrei fare in questa situazione per ottenere il risultato desiderato.
Nota: questo è tutto pseudocodice, quindi potrei avere alcuni errori, ma il concetto dovrebbe esserci.
Grazie per il suggerimento, ma il mio esempio è semplificato e davvero non si vuole reindirizzare appena a GET. Suppongo di poterlo fare, ma speravo in una soluzione che potesse far sì che il modello sostituisse i valori POSTed. –
@LeslieHanks - Ci scusiamo per l'incomprensione, per favore vedi la mia modifica. –
Ulteriori dettagli qui: http://blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc-s-html-helpers-render-the-wrong-value.aspx –