我有一个包含任意数量商品(产品)的购物车表格。对于每个项目,都有一个删除按钮。在表单的底部,有一个更新数量按钮。每个删除按钮都应该发布"删除"和Id。更新按钮应发布"更新"以及输入字段中的整个值数组。
我花了一些时间在谷歌上搜索答案,但每次提到一个表格中的多个提交按钮"我能找到,指的是每个按钮的不同动作。我想指向相同的操作,但每个按钮的ID不同。这意味着我无法在asp-action="someAction" asp-route-id="someId"
- 代码中使用FORM
。
我的问题:
1)如何向控制器发送动作和Id(删除项目)?如果我将Id放在按钮标记内的value=""
内,则ID将显示在按钮上。我不想要那个。
2)如何从所有项目的数量输入字段发送值数组,以及如何将每个值与相应的Id匹配(在操作方法中)?
这是我的购物车:
<form>
<table>
@foreach (var item in Model.ShoppingCartItems)
{
<tr>
<td nowrap>
<a asp-action="Details" asp-route-id="@item.ProductId">
@item.ProductTitle
</a>
</td>
<td nowrap>
@Html.DisplayFor(Model => item.ProductPrice)
</td>
<td nowrap>
<input asp-for="@item.Quantity" value="@item.Quantity" />
</td>
<td nowrap>
@Html.DisplayFor(modelItem => item.LineSum)
</td>
<td>
<button type="submit" formaction="Delete">Delete</button>
</td>
</tr>
}
<tr>
<td colspan="3"><strong>Sum</strong></td>
<td nowrap><strong>@Html.DisplayFor(model => model.TotalSum)</strong></td>
<td></td>
</tr>
<tr>
<td colspan="3">
<button type="submit" formaction="Update">Update quantities</button>
</td>
<td colspan="2">
<a asp-action="Checkout">Go to checkout</a>
</td>
</tr>
</table>
</form>
尚未编写动作方法。我不希望任何人为我编码,我只需要朝着正确的方向轻推。 :)
答案 0 :(得分:0)
您不必将其设为type =“submit”。你可以使它成为正常的Ajax请求。
(1)你可以在attr中添加id(例如:data-id =“@ Id”)并在按下删除时调用此函数调用javascript ajax调用并读取attr值。
(2)您可以传递JSON格式的数组 从这里了解更多 https://www.codeproject.com/Questions/834557/Pass-an-array-to-MVC-Controller-from-ajax How to pass Array to MVC Controller with Jquery?