MVC 2查看显示错误的模型信息

我正在使用MVC 2进行项目,我遇到了一个视图问题。 在控制器中我有代码:

return View(calendarDay); 

如果我调试这一行并检查calendarDay它告诉我calendarDay.Id属性等于2.在视图中我有一些代码如下:

  model.Id) %> 

但是,当在将其绑定到具有Id属性= 2的calendarDay之后显示视图时,我在生成的HTML上得到此信息:

  

值为1,因此当我执行TryUpdateModel(calendarDay)时,它将Id属性设置为1而不是2,当我转到存储库以使对象删除它时,它会崩溃,因为它找到了错误的。 谁知道我可能做错了什么?

我怀疑你正在尝试将控制器操作中的POSTed值(即1)修改为2.这是不可能的,因为这是所有HTML帮助程序的工作原理并且是设计的:它们首先会在绑定时查看POSTed值然后在模型中。 因此, HiddenFor助手会忽略模型的ID并使用已发布的ID。

作为一种解决方法,您可以:

  

正如@jfar在评论部分中所建议的,另一种解决方法是在返回视图之前清除post操作中的模型状态:

 MoselState.Clear(); 

似乎问题是视图使用来自控制器的id而不是模型中的id。 我刚刚更改了参数名称,现在工作正常。