我的Index.cshtml
@model ReportGenerator.WebUI.Models.ReportViewModel
@Html.TextBoxFor(m => m.report.FileName, new { @class = "form-control", id = "FileName" })
我的控制器
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);
}
当我运行我的应用程序时,TextBox
Text
属性设置为“INDEX”。此外,当我单击调用fillFields
控制器操作的按钮时,TextBox
仍然显示“INDEX”,它不会更改为“FILL”。
我做错了什么?为什么不想工作?
答案 0 :(得分:1)
@StephenMuecke在上面的评论中正确回答了这个问题。
你没有做错任何事。您的fillFields()
方法具有参数ReportViewModel,因此在初始化方法时将其值添加到ModelState。当您返回视图时,TextBoxFor()
方法使用ModelState
(而不是模型属性)中的值来设置文本框的值。解释原因here。正确的方法是遵循PRG模式 -