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。
我的 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。