MVC3 -Модель представления со списком сложных типов

Приносим извинения, если об этом уже спрашивали; есть миллион способов сформулировать это, поэтому поиск ответа оказался трудным.

У меня есть модель представления со следующими свойствами:

public class AssignSoftwareLicenseViewModel
{
    public int LicenseId { get; set; }
    public ICollection<SelectableDeviceViewModel> Devices { get; set; }
}

Упрощенная версия SelectableDeviceViewModel будет такой:

public class SelectableDeviceViewModel
{
    public int DeviceInstanceId { get; set; }
    public bool IsSelected { get; set; }
    public string Name { get; set; }
}

В своем представлении я пытаюсь отобразить список редактируемых флажков для свойства «Устройства» внутри формы ввода. В настоящее время мой вид выглядит так:

@using (Html.BeginForm())
{
    @Html.HiddenFor(x => Model.LicenseId)
    <table>
        <tr>
            <th>Name</th>
            <th></th>
        </tr>
        @foreach (SelectableDeviceViewModel device in Model.Devices)
        {
            @Html.HiddenFor(x => device.DeviceInstanceId)
            <tr>
                <td>@Html.CheckBoxFor(x => device.IsSelected)</td>
                <td>@device.Name</td>
            </tr>
        }
    </table>

    <input type="submit" value="Assign" />
}

Проблема в том, что когда модель отправляется обратно в контроллер, Devices имеет значение null.

Я предполагаю, что это происходит потому, что, несмотря на то, что я редактирую его содержимое, свойство Devices никогда явно не включается в форму. Я попытался включить его в HiddenFor, но это привело к тому, что модель имела пустой список вместо нуля.

Любая идея, что я делаю неправильно здесь?

18
задан InsqThew 26 July 2012 в 20:50
поделиться