ASP.NET MVC: Utiliser le langage Html.CheckBoxFor() pour recueillir liste de valeurs de chaîne quand elle est cochée

Dans mon application web, j'ai une page avec une liste de "Demandes" qu'un administrateur peut Approuver ou Refuser en bloc. Donc, la page devrait ressembler à quelque chose comme:

[x] Request 1
[ ] Request 2
[x] Request 3
[ ] Request 4

[Approve Selected]   [Deny Selected]

Mon modèle ressemble à quelque chose comme:

public class RequestManagementModel
{
    public List<string> LicenseIdsToProcess { get; set; }
    public List<Resource> Resources { get; set; }
    //additional fields
}

Et de mon point de vue, j'ai:

int counter = 0;
@foreach (Resource r in Model.Resources)
{
    <tr>
        <td>
            @Html.CheckBoxFor(model => model.LicenseIdsToProcess[counter++], new { value = r.RequestId })
        </td>
    </tr>
}

Et, bien sûr, mon action de contrôleur accepte le modèle de formulaire de post

public ActionResult ProcessRequests(RequestManagementModel model, ProcessType type)
{
    //process requests here
}

Donc, comme vous vous en doutez, j'obtiens une erreur dans l'affichage de model.LicenseIdsToProcess[counter++] qui dit "Impossible de convertir implicitement le type 'string' pour 'bool'". Il n'aime pas le fait que je suis en train d'utiliser des cases à cocher pour représenter une liste de valeurs que l'utilisateur peut sélectionner un ou plusieurs, plutôt qu'un seul vrai/faux.

J'aimerais que cela soit mis en place afin que, pour chaque case, l'utilisateur sélectionne que de la chaîne de valeur de l'id est lié à la liste des id dans mon modèle lorsque le formulaire est affiché. Je sais comment le faire simplement en utilisant <input type="checkbox">, parce que je peux définir la valeur de la case à cocher. Mais est-il un moyen de l'utiliser avec Html.CheckBoxFor de réaliser le typage fort par le biais de la liaison de modèle?

Grâce.

OriginalL'auteur MegaMatt | 2012-10-08