2015-10-05 13 views
7

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à TextBoxText è 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?

+5

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 –

+0

Grazie! Ho usato ModelState.Clear(); e funziona – Icet

+2

Non utilizzare 'ModelState.Clear()'. Segui lo schema PRG e reindirizza! –

risposta

1

@StephenMuecke ha risposto correttamente nei commenti sopra.

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 da ModelState (non la proprietà del modello) per impostare il valore della casella di testo. La ragione di ciò è spiegata here. L'approccio corretto è seguire lo schema PRG -

Problemi correlati