简体   繁体   中英

MVC pass model to view

My Index.cshtml

@model ReportGenerator.WebUI.Models.ReportViewModel
@Html.TextBoxFor(m => m.report.FileName, new { @class = "form-control", id = "FileName" })

My controller

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);
}

When I run my application the TextBox Text property is set to "INDEX". Also when I click on a button which calls the fillFields controller action, the TextBox is still displaying "INDEX", it's not changing to "FILL".

What am I doing wrong? Why it doesn't want to work?

@StephenMuecke answered this correctly in the comments above.

Your not doing anything wrong. Your fillFields() method has a parameter ReportViewModel so its values are added to ModelState when the method is initialized. When you return the view, your TextBoxFor() method uses the value from ModelState (not the model property) to set the value of the textbox. The reason for this is explained here . The correct approach is to follow the PRG pattern –

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM