J'ai une vue avec un tableau représentant la feuille de temps d'un employé. Jours en haut, projets en bas, avec chaque jour/intersection de projets contenant deux valeurs pour les heures régulières et les heures supplémentaires.ASP.NET MVC DefaultModelBinder avec listes imbriquées
Les définitions de classe (simplifié) pour le modèle de la page sont:
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;
}
Les éléments de formulaire sur la page sont nommés comme suit pour tenter d'obtenir le DefaultModelBinder pour ramasser sur eux.
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.
Lorsque la vue est soumise cependant, le paramètre model
est de ne pas complètement peuplé. model.Projects
contient des projets, mais le champ WorkUnits
de Project
est vide. Le DefaultModelBinder
prend-il en charge les collections imbriquées comme j'essaie de le faire? Sinon, que dois-je faire?