为什么Html.Hidden不会生成具有相同名称但值不同的隐藏字段

时间:2011-10-11 00:02:43

标签: asp.net-mvc-2

我正在尝试生成隐藏列表,因此我使用具有相同名称的隐藏字段,但是Html.Hidden输出现有值而不是新值。所以这段代码......

<% 
    for (int i = 0; i < Model.ProductIds.Count; i++)
    { %>
<%: Html.Hidden("ProductIds", Model.ProductIds[i], new { id=""})%>
<br />
Iteration:<%:i %>
Guid:<%:Model.ProductIds[i]%>
<br />
<% } %>

生成此HTML

<input name="ProductIds" type="hidden" value="48906f4c-1719-43ab-9d7e-c336a71b8624">
<br>
Iteration:0
Guid:48906f4c-1719-43ab-9d7e-c336a71b8624
<br>
<input name="ProductIds" type="hidden" value="48906f4c-1719-43ab-9d7e-c336a71b8624">
<br>
Iteration:1
Guid:b4f01496-dddf-41f2-a05b-43392d779a44
<br>

请注意,即使ID不同,生成的隐藏字段也会获得相同的值。为什么会发生这种情况,有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:1)

我不确定为什么会这样,但一个简单的解决方法就是自己构建html:

<% 
    for (int i = 0; i < Model.ProductIds.Count; i++)
    { %>
<input name="ProductIds" type="hidden" value="<%:Model.ProductIds[i]%>">
<br />
Iteration:<%:i %>
Guid:<%:Model.ProductIds[i]%>
<br />
<% } %>

答案 1 :(得分:0)

隐藏列表或具有相同名称的多个隐藏字段的用途是什么?难道你不能把它作为一个包含所有值的隐藏字段吗?