Je suis aux prises avec Html.Checkbox dans ASP.NET MVC. Imaginez un employé avec un groupe répétitif des enfants:Comment puis-je utiliser Html.Checkbox pour supprimer des groupes répétitifs dans ASP.NET MVC?
alt text http://img220.imageshack.us/img220/7208/deletechildrensnapshotk.png
Le « Ajouter un enfant » bouton fonctionne très bien, mais je ne peux pas utiliser de manière fiable « Supprimer les enfants sélectionnés ». Je rends les cases à cocher avec ceci:
<% int i = 0; %>
<% foreach (var item in Model.Children) { %>
<tr>
<td>
<%=Html.CheckBox("childrenToDelete[" + i + "]", false, new {value = item.Name})>
</td>
</tr>
<% i++; %>
<% } %>
Voilà comment mon action de contrôleur obtient la liste des enfants à supprimer d'un FormCollection:
var childrenToDelete = new List<string>();
UpdateModel(childrenToDelete, "childrenToDelete");
je puis créer un objet en utilisant le modèle ViewModel qui contient l'employé et une liste d'enfants. Je n'arrive pas à comprendre pourquoi 85% du temps, je lance une exception dans la ligne View sur la ligne Html.Checkbox. Environ 15% du temps, ça fonctionne bien. L'exception est "La conversion du paramètre de type 'System.String' en type 'System.Boolean' a échoué." IE affiche alors:
- FormatException: La chaîne n'a pas été reconnue comme une valeur booléenne valide. FormatException: Bobby n'est pas une valeur valide pour Boolean.
Bien sûr, "Bobby" n'est pas un booléen, donc il échoue. Toute idée sur la raison pour laquelle Html.Checkbox essaie d'utiliser "Bobby" comme un booléen? Le même ViewModel fonctionne très bien pour ajouter des enfants, donc je ne pense pas avoir une erreur là-bas.
Publiez tout le code de votre action POST, s'il vous plaît –
@ eu-ge-ne: Le voici: http://pastebin.ca/1522362 – royco
Mise à jour: Il semble que je peux toujours supprimer le dernier enfant de la liste.L'objet newChildren que je passe à ViewModel a toujours la liste d'enfants correcte et mise à jour. Je pense que j'ai la bonne stratégie ici, mais je dois juste avoir un bug quelque part. – royco