ASP.Net MVC 3 Recuperar valores da lista de caixas de seleção

Estou desenvolvendo um aplicativo Web do ASP.Net MVC 3 e estou tendo algumas dificuldades em obter os valores de uma lista de verificação. Eu já li a maioria das perguntas sobre o Stackoverflow nessa área, no entanto, ainda estou tendo alguns problema

Tenho um ViewModel

public class ViewModelCheckBox
{
    public string Id { get; set; }
    public string Name { get; set; }
    public bool Checked { get; set; }
}

Outro ViewModel que usa o viewmodel acima

public class ViewModelAssignSubSpeciality
{
    public ListItem Item { get; set; }
    public IList<ViewModelCheckBox> SpecialityList { get; set; }
}

Então no meu controlador

public ActionResult AssignSubSpeciality(int id)
{
        //Get a list of all sub-specialities
        var SpecialityList = _listService.GetListItemsByID(3).ToList();

        //Get a list of sub-specialities for the the passed in id, this is either the id of a speciality or grade
        IList<RelationshipSpecialitySub> assignedSpecialities = _listService.GetAssignedSubSpecialities(id).ToList();

        var checkBoxList = new List<ViewModelCheckBox>();

        foreach (ListItem item in SpecialityList)
        {
            ViewModelCheckBox chkBox = new ViewModelCheckBox { Id = item.listItemID.ToString(), Name = item.description };

            //If sub-speciality exists in assignedSpecialities list, then make checkbox checked
            foreach (var specilaity in assignedSpecialities)
            {
                if (specilaity.subID == item.listItemID)
                {
                    chkBox.Checked = true;
                }
                else
                {
                    chkBox.Checked = false;
                }
            }

            checkBoxList.Add(chkBox);
        }

        ViewModelAssignSubSpeciality viewModel = new ViewModelAssignSubSpeciality();
        viewModel.ListItem = _listService.GetListItemByID(id);
        viewModel.SpecialityList = checkBoxList;

        return View(viewModel);
    }

O código no controlador acima está recebendo uma lista de todos os itens possíveis da lista de caixas de seleção e, em seguida, uma lista de todos os itens da lista de caixas de seleção selecionados anteriormente para os quais define a opção marcada como verdadeir

O My View fica assim, percorrendo a SpecialityList e criando uma caixa de seleção para cada item, além de definir o valor selecionado como true, se necessári

<fieldset>
<legend>Specialities</legend>

@foreach (var item in Model.SpecialityList)
{
<input type="checkbox" id="@item.Id" name="@item.Name" value="@item.Id" @(item.Checked ? "checked" : "") />
<label for="@item.Id">@item.Name</label><br />
}

<input type="submit" value="Save Changes" class="sepH_b" />                                         

método @ My HttpPost no meu controlador se parece com isso

    public ActionResult AssignSubSpeciality(ViewModelAssignSubSpeciality model)
    {
        //delete all sub-specialities in tbl relationshipSpecialitySub for List
        foreach (ViewModelCheckBox item in model.SpecialityList)
        {
                //_listService.DeleteSubSpecialityFromSpeciality(item.Id);
        }

        return RedirectToAction("ListItems", new { id = model.ListItem.listID });
    }

No entanto, quando tento obter as caixas de seleção selecionadas em

model.SpecialityList

Nós sempre nulos. Não sei por que ele não contém uma lista de ViewModelCheckBox.

Alguém por favor pode me ajudar com isso

Obrigado

questionAnswers(6)

yourAnswerToTheQuestion