具有嵌套列表的ASP.NET MVC DefaultModelBinder
发布时间:2020-12-15 23:25:06 所属栏目:asp.Net 来源:网络整理
导读:我有一个视图,一个表表示员工的时间表.顶部的天数,项目落后,每天/项目交点包含两个正常小时和加班时间的值. 页面模型的(简化)类定义如下: public class TimesheetFormModel { public ListProject Projects; // other things...}public class Project { publ
我有一个视图,一个表表示员工的时间表.顶部的天数,项目落后,每天/项目交点包含两个正常小时和加班时间的值.
页面模型的(简化)类定义如下: 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.Projects包含项目,但Project的WorkUnits字段为空. DefaultModelBinder是否支持嵌套集合,就像我想要做的那样?如果没有,我该怎么办? 解决方法
我最终弄清楚DefaultModelBinder为什么不在WorkUnit的属性上拾取:因为它们不是属性,它们是字段. DefaultModelBinder仅适用于属性.将WorkUnit和Project的类定义更改为使用字段,一切都会点击:
public class Project { public IList<WorkUnit> WorkUnits { get; set; } public string Name { get; set; } } public class WorkUnit { public DateTime Date { get; set; } public decimal RegularHours { get; set; } public decimal OvertimeHours { get; set; } } (注意:原始问题中的源代码将Project.Name定义为一个字段,在我的实际代码中它是一个属性,这就是为什么“项目”列表被填充,但是WorkUnits不是.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
推荐文章
站长推荐
- asp.net – 尝试设置此报告中未定义的报告参数“
- asp.net:部分类和继承
- asp.net-mvc – Asp.NET MVC 2预览2:Area的aspx
- asp.net – 具有2个不同域的mvc3路由
- asp.net-mvc – 在MVC 4应用程序中处理带有自定义
- asp.net-core – 如何从Microsoft.NetCore.App 2
- asp.net-core – .NET核心托管包
- asp.net-mvc – 有关在ASP.NET MVC中放置AntiXSS
- ASP.NET Forms Auth当所有其他应该被拒绝时,允许
- asp.net listview Container.DataItemIndex
热点阅读