@MatheusBessa's answer works for a checkbox. For a list, you need to use the mapping structure for an array. See what changes:
A view:
@using (Html.BeginForm("Index", "Home"))
{
<input type="checkbox" name="CheckboxList[0]" />
<input type="checkbox" name="CheckboxList[1]" />
<input type="checkbox" name="CheckboxList[2]" />
...
<input type="checkbox" name="CheckboxList[n]" />
<input type="submit" value="Submit"/>
}
And the controller:
[HttpPost]
public ActionResult Index(String[] CheckboxList)
{
...
}
It is natural that your viewmodel has more information. In case this would be a property of the viewmodel.
It's important to note that indexes need to be sequential and start at 0. If this is not respected, the model binder will not accept as an enumerator.
As @MatheusBessa commented, a checked checkbox will give the string on. Anything other than that represents the clean checkbox.