Tengo una vista con una tabla que representa la parte de horas del empleado. Los días en la parte superior se proyectan hacia un lado, con cada intersección de día/proyecto que contiene dos valores para las horas regulares y las horas extraordinarias.ASP.NET MVC DefaultModelBinder con listas anidadas
Los (simplificado) definiciones de clases para el modelo de página son:
public class TimesheetFormModel {
public List<Project> Projects;
// other things...
}
public class Project {
public string Name;
public List<WorkUnit> WorkUnits;
}
public class WorkUnit {
public DateTime Date;
public decimal RegularHours;
public decimal OvertimeHours;
}
Los elementos de formulario en la página se nombran de la siguiente manera en un intento de conseguir la DefaultModelBinder para recoger en ellas.
model.Projects[0].Name // "New Project"
model.Projects[0].WorkUnits[0].Date // "5/23/2009 12:00:00 AM"
model.Projects[0].WorkUnits[0].RegularHours // 0
model.Projects[0].WorkUnits[0].OvertimeHours // 0
model.Projects[0].WorkUnits[1].Date // "5/24/2009 12:00:00 AM"
model.Projects[0].WorkUnits[1].RegularHours // 0
model.Projects[0].WorkUnits[1].OvertimeHours // 0
model.Projects[0].WorkUnits[2].Date // "5/25/2009 12:00:00 AM"
model.Projects[0].WorkUnits[2].RegularHours // 0
model.Projects[0].WorkUnits[2].OvertimeHours // 0
// etc.
Cuando la vista se presenta sin embargo, el parámetro model
no está siendo completamente poblado. model.Projects
contiene proyectos, pero el campo Project
WorkUnits
está vacío. ¿El DefaultModelBinder
es compatible con colecciones anidadas como las que trato de hacer? Si no, ¿qué debería hacer?