我有一个视图,其中包含一个表格,表示员工的时间表。天数在上面,项目在侧面,每个天/项目交叉处都包含正常工时和加班工时的两个值。
页面模型的(简化后的)类定义如下:
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;
}
为了让DefaultModelBinder能够识别页面上的表单元素,这些元素的命名如下所示。
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.
然而,当视图被提交时,model
参数没有完全填充。 model.Projects
包含项目,但是Project
的WorkUnits
字段为空。 DefaultModelBinder
是否支持像我尝试的嵌套集合?如果不支持,我该怎么做?