2013-01-25 82 views
2

我目前正在研究一个包含TimesheetEntries列表的Timesheet类的大型项目。有一个编辑页面,如下所示:Html.EditorFor丢失数据

<!-- Other timesheet properties --> 
@Html.EditorFor(model => model.TimesheetEntries) 

这很好,我为每个时间表条目获得一行。当我保存时间表(POST到服务器)时,自定义模型绑定器会在将Timesheet传递到控制器之前剥去空行,换句话说,Timesheet可以包含比POST数据少的行。

如果出现验证错误,我重新显示编辑页面,这就是问题出现的地方。

如果model.TimesheetEntries包含n记录Html.EditorFor()再现从POST数据第一n行(包括空行),而不是因为我通过它的数据创建HTML!这意味着我在表格底部丢失了很多行,这显然是不需要的。

任何人都可以解释为什么会发生这种情况,甚至更好告诉我如何让EditorFor按照我的预期工作?

这是一张描述这一过程:

TimesheetProcess

回答

0

结果Html.EditorFor在使用通过它的值之前在ModelState中查找...因此,为了让它获取我通过的值,我需要首先清除ModelState中相关的值,呃。

This问题/答案涵盖了更多细节。