Я борюсь с Html.Checkbox в ASP.NET MVC. Представьте себе сотрудника с повторяющейся группой детей:
альтернативный текст 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");
Затем я создаю объект, используя шаблон ViewModel, который содержит Employee и List of Child. Я не могу понять, почему в 85% случаев я выбрасываю исключение в представлении в строке Html.Checkbox. Примерно в 15% случаев все работает нормально. Исключение составляет «Ошибка преобразования параметра из типа System.String в тип System.Boolean». IE отображает:
- FormatException: строка не была распознана как допустимое логическое значение.
- FormatException: Bobby не является допустимым значением для логического значения.
Конечно, "Бобби" не является логическим значением, поэтому он терпит неудачу. Любая подсказка о том, почему Html.Checkbox пытается использовать «Бобби» в качестве логического значения? Тот же ViewModel отлично работает для добавления детей, поэтому я не думаю, что у меня там ошибка.