我目前正在开发一个大型项目,其中包含一个包含TimesheetEntries列表的Timesheet类。有一个编辑页面,如下所示:
<!-- Other timesheet properties -->
@Html.EditorFor(model => model.TimesheetEntries)
这很好用,每个时间表条目都有一行。当我将时间表(POST到服务器)保存时,自定义模型绑定器会在将时间表传递给控制器之前删除空行,换句话说,时间表可以包含比POST数据更少的行。
如果存在验证错误,我会重新显示编辑页面,这就是出现问题的地方。
如果model.TimesheetEntries
包含n
条记录Html.EditorFor()
,则会从POST数据(包括空行)中重现第一行n
行,而不是为我传递的数据创建HTML !这意味着我在桌子底部丢失了许多行,这显然是不需要的。
任何人都可以解释为什么会发生这种情况,或者更好地告诉我如何让EditorFor像我期望的那样工作?
以下是描述该过程的图片:
答案 0 :(得分:0)
您可能需要查看此帖中提供的答案Asp:net MVC 3: @Html.EditorFor a subcollection of my model in a template?这可能有所帮助。
答案 1 :(得分:0)
在使用传递给它的值之前,Html.EditorFor在ModelState中查找...为了让它获取我传递给它的值,我需要先从ModelState中清除相关的值,唉。
This问题/答案会更详细地介绍它。