Dynamique de la liste de cases à cocher et de la liaison de modèle

Je suis en train de créer une vue qui contient une liste de cases à cocher qui est créé dynamiquement à partir d'une base de données, puis de récupérer la liste de ceux qui sont sélectionnés lorsque le formulaire est affiché en arrière.

Mon modèle EF contient une classe:

public class ItemIWouldLikeACheckboxFor {
    public int Id { get; set; }
    public string Description { get; set; }
}

J'ai un modèle de vue qui contient une liste de ces:

public class PageViewModel {
    //various other properties
    public List<ItemIWouldLikeACheckboxFor> checkboxList { get; set; }
}

Mon contrôleur méthode get:

public ActionResult Create() {
    var viewModel = new PageViewModel();
    viewModel.checkboxList = db.ItemIWouldLikeACheckboxFors.ToList();
    return View(viewModel);
}

Mon point de vue:

<% using (Html.BeginForm()) { %>
    <%-- other stuff here... %>

    <% foreach (var item in checkboxList) { %>
        <%: Html.CheckBox( <!-- what exactly ?????? -->) %>
    <% } %>

    <%-- other stuff here...%>
    <input type="submit" />
<% } %>

Mon contrôleur méthode post:

[HttpPost]
public ActionResult Create(PageViewModel viewModel) {
    //do stuff with other fields

    //I would like to do something like:
    foreach (var item in selectedCheckBoxes) {
        //do stuff
    }
}

Je n'arrive pas à le faire fonctionner. Mes questions de base sont mélangés en tant que commentaires dans les extraits de code, mais pour résumer:

  • Est mon point de vue, le modèle OK? (ai-je besoin d'ajouter quoi que ce soit pour capturer ceux qui sont sélectionnés plutôt que de simplement la liste pour l'afficher?)
  • Exactement ce que dois-je mettre dans la vue pour le rendu de chaque case à cocher?
  • Comment puis-je accéder aux cases sélectionnées dans le contrôleur, après le post?

OriginalL'auteur Jon | 2010-07-13