Извините, если это было задано раньше; есть миллион способов выразить это, поэтому поиск ответа оказался трудным.
У меня есть viewmodel со следующими свойствами:
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; }
}
В моем представлении я пытаюсь отобразить список редактируемых флажков для свойства Devices, внутри формы ввода. В настоящее время мой вид выглядит следующим образом:
@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 никогда явно не включено в форму. Я попытался включить его с помощью HiddenFor, но это привело к тому, что модель имела пустой список вместо null.
Любая идея, что я делаю неправильно здесь?