繁体   English   中英

MVC 2视图显示错误的模型信息

[英]MVC 2 View showing wrong model info

我正在为项目使用MVC 2,但视图存在问题。 在控制器中,我有以下代码:

return View(calendarDay);

如果我调试此行并检查calendarDay,它将告诉我calendarDay.Id属性等于2。在视图中,我有类似以下代码:

<%: Html.HiddenFor(model => model.Id) %>

但是,在将视图绑定到具有id属性= 2的calendarDay后显示视图时,将在生成的HTML上获取该视图:

<input id="Id" name="Id" type="hidden" value="1">

该值为1,所以当我执行TryUpdateModel(calendarDay)时,它会将Id属性设置为1而不是2;当我进入存储库以删除该对象时,它会崩溃,因为它找到了错误的对象。 有人知道我可能做错了吗?

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

解决方法是:

<input type="hidden" name="Id" value="<%: Model.Id %>" />

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

MoselState.Clear();

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM