Ric*_*ard 1 asp.net-mvc asp.net-mvc-2
我正在使用我在隐藏字段中传递的id值.当用户提交表单时,我需要隐藏字段进行更新.更新后,新值将放置在模型的隐藏字段中并发送回视图.看起来很奇怪的是助手总是使用第一个值,永远不会更新.例如,从View中查看以下内容:
<%: Html.Hidden("MyId",Model.MyId) %>
<%: Model.MyId %>
Run Code Online (Sandbox Code Playgroud)
第一次看一下浏览器中的源代码产生:
<input type="hidden" id="MyId" name="MyId" value="1" />
1
Run Code Online (Sandbox Code Playgroud)
**提交回控制器并将模型更新MyId属性更新为2.
回到浏览器,我现在发现:
<input type="hidden" id="MyId" name="MyId" value="1" />
2
Run Code Online (Sandbox Code Playgroud)
同一个型号属性有不同的值!帮助器方法以某种方式从先前的模型实例中获取它或什么?
任何帮助都非常感谢我不理解.顺便说一句,Html.TextBox和Html.TextBoxFor.相同的行为.
谢谢.
这就是HTML帮助程序的工作原理,它是设计的.绑定时,他们将首先查看GET/POST请求中的值,以查看该值是否存在以及之后是否存在于模型中.如果在请求中找到值,则它们将忽略您在模型中设置的值.
通常,您不应该在控制器操作中修改请求中发送的数据.但无论如何,如果你决定这样做,你需要自己动手帮助,或者干脆:
<input type="hidden" name="MyId" value="<%= Model.MyId %>" />
Run Code Online (Sandbox Code Playgroud)