La lista de ViewModel es nula en acción

Estoy trabajando en mi primera aplicación ASP.NET MVC 3 y tengo una Vista que se ve así:

@model IceCream.ViewModels.Note.NotesViewModel @using (Html.BeginForm()) { @Html.ValidationSummary(true) @Html.TextBoxFor(m => m.Name) foreach (var item in Model.Notes) { @Html.EditorFor(m => item); }  } 

Y tengo un EditorTemplate que se ve así:

 @model IceCream.ViewModels.Note.NoteViewModel 
@Html.HiddenFor(m => m.NoteID) @Html.TextBoxFor(m => m.NoteText) @Html.CheckBoxFor(m => m.IsChecked)

NotesViewModel se ve así:

  public class NotesViewModel { public string Name { get; set; } public IEnumerable Notes { get; set; } } 

NoteViewModel se ve así:

 public class NoteViewModel { public int NoteID { get; set; } public System.DateTime Timestamp { get; set; } public string NoteText { get; set; } public bool IsChecked { get; set; } } 

NotesViewModel se completa correctamente cuando se pasa a la vista. Sin embargo, cuando se hace clic en el botón Enviar, la acción del controlador que maneja la publicación solo tiene el valor de la propiedad Nombre del modelo de vista. La propiedad Notas – la lista de notas que el usuario ha marcado / desmarcado – es nula. Tengo una desconexión entre la población de esos elementos TextBoxFor y CheckBoxFor cuando se muestra la vista y se devuelve ViewModel. Orientación sobre esto?


SOLUCIÓN Gracias a Mystere Man por ayudarme con esto. Como yo lo entiendo, esencialmente cambiando mi ciclo a

@Html.EditorFor(m => m.Notes)

cambia el HTML subyacente, que entiendo provee para el enlace apropiado del modelo en la publicación. Al observar el HTML resultante, veo que obtengo lo siguiente generado para una de las Notas:

 

Que es diferente a este HTML generado por mi código original:

 

Al recorrer las notas, el HTML generado pierde esencialmente cualquier referencia a la propiedad Notes del viewmodel y mientras que el HTML se llena correctamente, la configuración de los valores de la checkbox no tiene forma de comunicar sus valores al viewmodel, que supongo que es el punto del modelo vinculante.

Entonces aprendí algo, que es bueno.

Eres un tipo inteligente, así que mira tu punto de vista. Luego, considere cómo se genera el HTML. Luego, considere cómo se supone que en la devolución de datos se debe saber que el Carpete del Modelo debe rellenar las Notas en función del HTML generado.

Creo que encontrará que su HTML no tiene suficiente información para que el Carpeta de Modelos lo resuelva.

Considera esto:

 @EditorFor(m => Model.Notes) 

En lugar del bucle for donde básicamente se oculta el contexto de la función EditorFor.

Y para aquellos que solo quieren la respuesta como un bucle for:

 @for (int x = 0; x < Model.Notes.Count(); x++) { @Html.HiddenFor(m => m.Notes[x].NoteId) @Html.EditorFor(m => m.Notes[x].NoteText) @Html.EditorFor(m => m.Notes[x].IsChecked) }