Razor 在 Web 发布后为数组生成不正确的 HTML

Razor generates incorrect HTML for arrays after web publishing

我的 ViewModel 中有一个 Ticket 对象数组,我为它显示了一个编辑器:

<tbody class="ticket-entry" id="ticket-body">
    @Html.EditorFor(m => m.Tickets)
</tbody>

在本地测试时生成的输入中的名称总是正确的,例如:

<input id="Tickets_0__RouteNumber" name="Tickets[0].RouteNumber" type="text" value="5454">

但是,在发布到另一台服务器后,MVC 生成了不同的名称,导致模型绑定失败。发布后生成的同一部分如下所示:

<input id="Tickets_Tickets_0__RouteNumber" name="Tickets.Tickets[0].RouteNumber" type="text" value="5454">

请注意,属性 名称已在此处重复。

表单上的所有数组都会发生这种情况,并且可以在 Windows Server 2008 R2 和 Windows Server 2012 R2 上复制。我的本地版本指向与生产相同的数据库,我尝试发布调试版本、禁用预编译以及在 IIS Express 和 IIS Local 中进行测试,但结果是一致的。

这是由于以前版本中仍然存在额外文件造成的。在发布步骤中启用 Remove additional files at destination. 解决了这个问题,尽管我仍然不确定这会如何导致生成不正确的 HTML。