Html.Hidden在MVC 2应用程序中构建错误的值数据

时间:2010-09-25 17:30:20

标签: asp.net-mvc asp.net-mvc-2

我正在使用我在隐藏字段中传递的id值。当用户提交表单时,我需要隐藏字段进行更新。更新后,新值将放置在模型的隐藏字段中并发送回视图。看起来很奇怪的是助手总是使用第一个值,永远不会更新。例如,从View:

中查看以下内容
<%: Html.Hidden("MyId",Model.MyId)  %>
<%: Model.MyId %>

首次查看浏览器中的源代码:

<input type="hidden" id="MyId" name="MyId" value="1" />
1

**提交回控制器并将模型更新MyId属性为2。

回到浏览器,我现在发现:

<input type="hidden" id="MyId" name="MyId" value="1" />
2

完全相同的模型属性具有不同的值!辅助方法是以某种方式从先前的模型实例中获取它还是什么?

任何帮助都非常感谢我不理解的东西。 BTW ..与Html.TextBoxHtml.TextBoxFor保持相同的行为。

感谢。

1 个答案:

答案 0 :(得分:7)

这就是HTML帮助程序的工作原理,它是设计的。绑定时,他们将首先查看GET / POST请求中的值,以查看该值是否存在以及之后是否存在于模型中。如果在请求中找到值,则它们将忽略您在模型中设置的值。

通常,您不应该在控制器操作中修改请求中发送的数据。但无论如何,如果你决定这样做,你需要自己动手帮助,或者干脆:

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