これが以前に尋ねられた場合はお詫び申し上げます。それを表現する方法は無数にあるため、答えを探すのは難しいことがわかっています。
次のプロパティを持つビューモデルがあります。
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 が null になることです。
コンテンツを編集しているにもかかわらず、Devices プロパティがフォームに明示的に含まれていないため、これが発生していると思います。HiddenFor でそれを含めようとしましたが、その結果、モデルのリストが null ではなく空のリストになりました。
ここで何が間違っているのか分かりますか?