ActionLink将来自不同表格单元格的输入值传递给控制器​​方法

时间:2018-03-08 06:26:07

标签: c# asp.net-mvc actionlink

我在MVC工作。 我有一堆有一堆行的表。一个单元格包含一个“订单”按钮,另一个单元格包含一个数字输入,用户可以在其中指定他想要购买的商品的数量?如何从输入单元格中传递ActionLink中的数量值?这里的问题不是查找文本值,而是查找特定行的文本值

enter image description here

表格单元格

        <td><input id="itemQuantity" type="number" value="1" min="1" max="@item.QuantityInStock" size="10" class="universalWidth"/></td>
        <td>@Html.ActionLink("Order", "OrderTuckShop", new { id = item.IngredientId, quanity = ???}, new { @class = "btn btn-success universalWidth" })</td>

方法调用

public ActionResult OrderTuckShop(Guid? id, int quantity)

1 个答案:

答案 0 :(得分:1)

您无法在ActionLink()方法中添加文本框的值,因为它是剃刀代码,并且在发送到客户端之前在服务器上进行了解析。为了响应客户端事件,您需要使用javascript / jquery。

创建手动链接并将IngredientId添加为data-属性,并添加其他类名称以用作选择器

<td>
    <a href="#" data-id="@item.IngredientId" class="order btn btn-success universalWidth">Order</a>
</td>

此外,删除输入中的id="itemQuantity"(重复的id属性是无效的html)并添加类名作为选择器

<input class="quantity" type="number" ... />

然后包含以下脚本来读取输入的值并进行重定向

var baseUrl = '@Url.Action("OrderTuckShop")';
$('.order).click(function() {
    var id = $(this).data('id');
    var quantity = $(this).closest('tr').find('.quantity').val();
    location.href = baseUrl + '?id=' + id + '&quanity=' + quanity;
});

然而,该方法的名称暗示您可能应该进行POST而不是GET?

相关问题