Lista dinámica de casillas de verificación y enlace de modelo

Estoy tratando de crear una vista que contenga una lista de casillas de verificación que se crea dinámicamente a partir de una base de datos, y luego recuperar la lista de las seleccionadas cuando se vuelve a publicar el formulario.

Mi modelo EF contiene una clase:

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

Tengo un modelo de vista que contiene una lista de estos:

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

Mi controlador obtiene el método:

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

Mi vista:

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

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

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

Mi método de publicación del controlador:

[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
    }
}

Parece que no puedo hacer que funcione. Mis preguntas básicas se mezclan como comentarios en los fragmentos de código, pero para recapitular:

¿Mi modelo de vista está bien? (¿Necesito agregar algo para capturar los seleccionados en lugar de simplemente la lista para mostrar?)¿Qué debo poner exactamente en la vista para representar cada casilla de verificación?¿Cómo accedo a las casillas de verificación seleccionadas en el controlador después de la publicación?

Respuestas a la pregunta(2)

Su respuesta a la pregunta