1

我目前正在处理一个大型项目,该项目有一个包含 TimesheetEntries 列表的 Timesheet 类。有一个编辑页面,如下所示:

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

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

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

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

谁能解释为什么会发生这种情况,或者更好地告诉我如何让 EditorFor 按我的预期工作?

这是一张图片来描述这个过程:

时间表流程

4

2 回答 2

0

您可能想看看这篇文章中提供的答案Asp:net MVC 3: @Html.EditorFor a subcollection of my model in a template? 它可能会有所帮助。

于 2013-01-25T13:10:52.597 回答
0

结果是 Html.EditorFor 在使用您传递的值之前先在 ModelState 中查找......所以为了让它获取我传递的值,我需要先从 ModelState 中清除相关的值,呃。

这个问题/答案更详细地介绍了它。

于 2013-01-28T15:15:30.013 回答