Disculpas si esto se ha hecho antes; hay un millón de formas de expresarlo, por lo que buscar una respuesta ha resultado difícil.MVC3 - viewmodel con la lista de tipos complejos
que tienen un modelo de vista con las siguientes propiedades:
public class AssignSoftwareLicenseViewModel
{
public int LicenseId { get; set; }
public ICollection<SelectableDeviceViewModel> Devices { get; set; }
}
Una versión simplificada de SelectableDeviceViewModel sería la siguiente:
public class SelectableDeviceViewModel
{
public int DeviceInstanceId { get; set; }
public bool IsSelected { get; set; }
public string Name { get; set; }
}
en mi opinión, que estoy tratando de mostrar una lista de casillas editables para la propiedad Dispositivos, dentro de un formulario de entrada. Actualmente, mi vista se ve así:
@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" />
}
El problema es que cuando el modelo que se envía de vuelta al controlador, dispositivos es nula.
Mi suposición es que esto está sucediendo, porque a pesar de que estoy editando su contenido, la propiedad dispositivos no se incluye explícitamente en el formulario. Intenté incluirlo con HiddenFor, pero eso solo dio como resultado que el modelo tuviera una lista vacía en lugar de nula.
Alguna idea de lo que estoy haciendo mal aquí?
¿Puede mostrarnos el código de su controlador que está rellenando el modelo de datos? – nikeaa
+1 para la pregunta más elegantemente descrita que cubre esta área. Créanme, ¡hemos pasado las últimas 2 horas buscando este problema! –