我有一个带有参数(JobID)的动作的控制器。我很惊讶地看到它自动映射到控制器返回的视图中具有相同名称的隐藏字段。我正在使用强类型视图模型,并假设我需要将所有模型属性作为视图模型的一部分传递。看来事实并非如此。
我知道视图字段映射回调用控制器上的操作参数,但没有意识到这两种方式都有效。我理解正确吗?有这个问题吗?
答案 0 :(得分:2)
如果您使用HTML帮助程序生成这些输入标记,那么在渲染时,它们将首先查看请求参数(POST和GET),然后查看模型和ViewData。这样做的条件是具有相同名称的action参数。
问题是您无法修改控制器操作中的值,它将始终使用作为参数传递的值。因此,请考虑以下POST操作:
[HttpPost]
public ActionResult Index(Job job)
{
job.JobID = 10;
return View();
}
与jobID = 5
一起发布。即使您将值设置为10
,html帮助器在渲染时也会使用5
。