我正在努力与ASP.NET MVC中的Html.Checkbox。想象一下,一个雇员与儿童的重复组:如何使用Html.Checkbox删除ASP.NET MVC中的重复组?
alt text http://img220.imageshack.us/img220/7208/deletechildrensnapshotk.png
“添加子”按钮正常工作,但我不能可靠地使用“删除选中的孩子”。我呈现的复选框与此:
<% int i = 0; %>
<% foreach (var item in Model.Children) { %>
<tr>
<td>
<%=Html.CheckBox("childrenToDelete[" + i + "]", false, new {value = item.Name})>
</td>
</tr>
<% i++; %>
<% } %>
下面是我的控制器行动得到孩子们的名单从的FormCollection删除:
var childrenToDelete = new List<string>();
UpdateModel(childrenToDelete, "childrenToDelete");
我然后创建使用包含员工的视图模型图案的物体和一张儿童名单。我无法弄清楚为什么85%的时间我在Html.Checkbox行的View中抛出异常。大约15%的时间,它工作正常。例外是“从类型'System.String'到类型'System.Boolean'的参数转换失败。” IE然后显示:
- FormatException:String未被识别为有效的布尔值。
- FormatException:Bobby不是Boolean的有效值。
当然“Bobby”不是布尔值,所以它失败了。关于为什么Html.Checkbox试图将“Bobby”用作布尔值的任何线索?相同的ViewModel适用于添加孩子,所以我不认为我有一个错误。
发布你的POST动作的所有代码,请 – 2009-08-08 10:14:47
@ eu-ge-ne:它是:http://pastebin.ca/1522362 – royco 2009-08-08 22:35:32
更新:它看起来像我总是可以删除列表中的最后一个孩子。我传递给ViewModel的newChildren对象始终拥有正确和更新的子级列表。我想我在这里有正确的策略,但我必须在某个地方有一个bug。 – royco 2009-08-08 22:40:16