对于以下情况,最合适的方法是什么?
我有两种模式:
DayStartTime
,DayEndTime
,BreakTime
,List<TimeSheetHours>
ClientId
,ProjectId
,HoursWorked
我的时间表视图强烈输入IEnumerable<TimeSheet>
列表。此列表包含7个TimeSheet模型,一个星期日到星期六的每一天。此时间表视图使用编辑器tempate为一周中的每一天生成DayStartTime
,DayEndTime
,BreakTime
的输入字段:
每天都有一个客户部分和项目。单击“添加”按钮激发ajax函数,该函数调用控制器动作以呈现部分视图,动态地将一行控件(客户端组合框,项目组合框,小时工作文本框)插入适当的客户端&amp;当天的项目部分:
当我通过ajax调用添加新的客户端/项目行时,我很难理解如何更新每个时间表模型的List<TimeSheetHours>
。
所以最后,当我向控制器提交插入时间表时,我生成视图的列表中的每个时间表模型都需要我所需的一切。
非常感谢任何帮助。
谢谢!
答案 0 :(得分:0)
您必须在发布之前按下这些元素的名称,使其看起来像我在下面的方式或在TimeSheet
的索引中的ajax调用传递,然后创建名称:< / p>
TimeSheetHours
索引= 0
<input type="text" id="TimeSheet[0]_TimeSheetHours[0]_DayStartTime"
name="TimeSheet[0].TimeSheetHours[0].DayStartTime" value="1" />
<input type="text" id="TimeSheet[0]_TimeSheetHours[0]_DayEndTime"
name="TimeSheet[0].TimeSheetHours[0].DayEndTime" value="2" />
<input type="text" id="TimeSheet[0]_TimeSheetHours[0]_BreakTime"
name="TimeSheet[0].TimeSheetHours[0].BreakTime" value="1" />
TimeSheetHours
索引= 1
<input type="text" id="TimeSheet[0]_TimeSheetHours[1]_DayStartTime"
name="TimeSheet[0].TimeSheetHours[1].DayStartTime" value="3" />
<input type="text" id="TimeSheet[0]_TimeSheetHours[1]_DayEndTime"
name="TimeSheet[0].TimeSheetHours[1].DayEndTime" value="4" />
<input type="text" id="TimeSheet[0]_TimeSheetHours[1]_BreakTime"
name="TimeSheet[0].TimeSheetHours[1].BreakTime" value="0" />
你可能会更好地拦截submit
事件并迭代每个TimeSheetHours
html表示的元素并将名称指定为掩码,然后提交表单。这应该允许模型绑定器使用填充的List<TimeSheet>
属性重建List<TimeSheetHours>
。
这是一个很好的教程,介绍如何解决发布集合的问题:ASP.NET MVC 2 Model Binding for a Collection