Ответ Дарина верен, но есть предостережение: вам нужно иметь поле в форме для каждого поля «набора» в модели, в противном случае оно не совпадает, и результирующий Список модели будет нулевым.
Рассмотрим этот случай для списка AccountModel:
public class AccountModel
{
public AccountType Type { get; set; }
public bool Selected { get; set; }
public string Name { get { return Util.GetAccountTypeName(Type); } }
}
Родительское представление должно содержать только ...
@Html.EditorFor(model => model.Accounts)
... где ...
List<AccountModel> Accounts { get; set; }
... является частью вашей общей ViewModel.
Теперь, если вы создадите свой шаблон редактора, как этот ...
@model WebLinx.Models.AccountModel
<div class="informationRow">
@Html.CheckBoxFor(x => x.Selected)
<div class="formLabel">
@Html.Label(Model.Name)
</div>
</div>
... тогда выпри отправке вернет пустой объект в родительскую модель, даже если при отображении список учетных записей с флажками выглядит завершенным.
Но если добавить одну дополнительную строку:
@model WebLinx.Models.AccountModel
<div class="informationRow">
@Html.CheckBoxFor(x => x.Selected)
@Html.HiddenFor( x=> x.Type) @* extra line with hidden field *@
<div class="formLabel">
@Html.Label(Model.Name)
</div>
</div>
тогда у вас будет полное совпадение между формой и объектом AccountModel, и список AccountModel будет содержать все элементы (и обновленные значения для флажков).