7
我Index.cshtmlMVC模型通过查看
@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
属性设置为 “索引”。当我点击一个按钮,调用fillFields
控制器动作时,TextBox
仍然显示“INDEX”,它不会更改为“FILL”。
我在做什么错?为什么它不想工作?
你没有做错什么。你的'fillFields()'方法有一个参数'ReportViewModel',所以当方法被初始化时,它的值被添加到'ModelState'中。当您返回视图时,您的'TextBoxFor()'方法使用来自'ModelState'(不是模型属性)的值来设置文本框的值。这样做的原因解释[这里](http://stackoverflow.com/questions/26654862/textboxfor-displaying-initial-value-not-the-value-updated-from-code/26664111#26664111)。正确的做法是遵循PRG模式 –
谢谢!我用过ModelState.Clear();并且它正在工作 – Icet
请勿使用'ModelState.Clear()'。遵循PRG模式并重定向! –