【发布时间】:2019-07-22 10:10:36
【问题描述】:
我基本上有一个表单,我在其中添加和删除项目并使用模型绑定将它们绑定到列表。这适用于修改字段和添加新项目,但是当我尝试删除它们时,我破坏了索引并且绑定的列表不包括所有项目。
我生成的标记看起来像这样:
<table>
<tbody>
<tr>
<input type="text" name="devices[0].id" value="8574" />
<input type="text" name="devices[0].type" value="Type1" />
</tr>
<tr>
<input type="text" name="devices[1].id" value="4385" />
<input type="text" name="devices[1].type" value="Type2" />
</tr>
<tr>
<input type="text" name="devices[2].id" value="9486" />
<input type="text" name="devices[2].type" value="Type1" />
</tr>
...
</tbody>
</table>
我的模型绑定是这样的:
public IActionResult OnPostSave(List<Device> devices){
// ... do something
}
现在我让用户操作表单数据,只需通过 javascript 从表中删除行,然后将更新后的表单发送到我的OnPostSave()。现在,例如,当删除 ID 为“4385”的行时,该行之后的所有项目都不会被绑定。关于 Scott Hanselman 的 post 这绝对是有道理的,但我想知道是否有解决办法?最好在将表单发布到服务器之前不修改js中的表单。
提前致谢!
【问题讨论】:
标签: c# asp.net model-binding razor-pages