我正在使用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 Dev工具输出的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>
答案 0 :(得分:3)
现在已经解决了...这是因为我有嵌套的表格(整个页面是一个编辑页面,因此被包装在一个表单中)。