MVC传递模型来查看

时间:2015-10-05 09:07:56

标签: c# asp.net-mvc asp.net-mvc-4

我的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”。

我做错了什么?为什么不想工作?

1 个答案:

答案 0 :(得分:1)

@StephenMuecke在上面的评论中正确回答了这个问题。

你没有做错任何事。您的fillFields()方法具有参数ReportViewModel,因此在初始化方法时将其值添加到ModelState。当您返回视图时,TextBoxFor()方法使用ModelState(而不是模型属性)中的值来设置文本框的值。解释原因here。正确的方法是遵循PRG模式 -