MVC将模型传递给视图

本文关键字:视图 模型 MVC | 更新日期: 2023-09-27 18:16:06

My 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"。

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

MVC将模型传递给视图

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

你没有做错什么。您的fillFields()方法有一个参数ReportViewModel,因此当方法初始化时,它的值被添加到ModelState。当您返回视图时,您的TextBoxFor()方法使用ModelState中的值(而不是模型属性)来设置文本框的值。这里解释了原因。正确的方法是遵循PRG模式-