mio Index.cshtmlMVC modello di passaggio per visualizzare
@model ReportGenerator.WebUI.Models.ReportViewModel
@Html.TextBoxFor(m => m.report.FileName, new { @class = "form-control", id = "FileName" })
mio regolatore
public ActionResult Index(ReportViewModel model)
{
...some stuff
model.report = new Report();
model.report.FileName = "INDEX";
return View(model);
}
public ActionResult fillFields(ReportViewModel _model)
{
...some stuff
_model.report = new Report();
_model.report.FileName = "FILL";
return View("Index", _model);
}
Quando eseguo la mia applicazione la proprietà TextBox
Text
è impostata su "INDEX". Inoltre, quando faccio clic su un pulsante che chiama l'azione del controller fillFields
, continua a visualizzare "INDICE", non sta cambiando in "FILL".
Cosa sto sbagliando? Perché non vuole lavorare?
Il tuo non fare nulla di sbagliato. Il metodo 'fillFields()' ha un parametro 'ReportViewModel' quindi i suoi valori vengono aggiunti a' ModelState' quando il metodo viene inizializzato. Quando si restituisce la vista, il metodo 'TextBoxFor()' utilizza il valore di 'ModelState' (non la proprietà del modello) per impostare il valore della casella di testo. La ragione di ciò è spiegata [qui] (http://stackoverflow.com/questions/26654862/textboxfor-displaying-initial-value-not-the-value-updated-from-code/26664111#26664111). L'approccio corretto è seguire il modello PRG –
Grazie! Ho usato ModelState.Clear(); e funziona – Icet
Non utilizzare 'ModelState.Clear()'. Segui lo schema PRG e reindirizza! –