我正在使用 MVC5 并希望为集合中的每个项目显示一个表单。提交时,表单将发布到不同控制器中的操作。
我的剃须刀如下:
@foreach (var skuInOrder in Model.Order.Skus)
{
using (Html.BeginForm("Delete", "SkuInOrders", new { id = skuInOrder.Id }, FormMethod.Post, new { name = skuInOrder.Id, id = skuInOrder.Id }))
{
<input id="orderId" name="orderId" value="Model.Order.Id" type="hidden" />
<input type="submit" class="btn btn-default" value="Delete" />
}
}
此代码适用于集合中除第一个之外的所有项目。
对于第二个项目,表单元素会显示并按预期工作,但不会为第一个项目输出表单。相反,我只是简单地获取不在一个元素内的两个元素。
这是通过 Firefox 开发工具输出的 HTML 示例(集合中有 2 个项目)。请注意,第一项没有表单,输入是单独显示的,但第二项有一个表单。
我无法发布图片,因为我没有足够的代表,但您可以在此处下载表格:https ://onedrive.live.com/redir?resid=999be3b43db18398%211133026
更新 我现在发现即使使用标准 HTML 表单(不仅仅是@Html.beginForm)我也会得到这种行为。例如,此剃须刀代码还删除了第一项的表单元素,但不删除后续项。
<form action="/SkuInOrders/Delete/@skuInOrder.Id" method="post" >
<input id="orderId" name="orderId" value="@Model.Order.Id" type="hidden" />
<input type="submit" class="btn btn-default" value="Delete" />
</form>