Приносим извинения, если об этом уже спрашивали; есть миллион способов сформулировать это, поэтому поиск ответа оказался трудным.
У меня есть модель представления со следующими свойствами:
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, но это привело к тому, что модель имела пустой список вместо нуля.
Любая идея, что я делаю неправильно здесь?