我有一个观点,这里是它的一个片段:
@foreach (var item in Model.Items.ToList())
{
<tr>
<td>
<input type="checkbox" name="productIdCheckbox" value="@item.sLabel">
</td>
<td>
@Html.DisplayFor(modelItem => item.sLabel)
</td>
<td>
@Html.DisplayFor(modelItem => item.Text)
</td>
<td>
@Html.DisplayFor(modelItem => item.OEMCode)
</td>
<td>
<input type="number" name="qty" id="qty" min="1" max="1000" step="1" value="@item.Quantity" />
</td>
<td>
<input type="submit" data-url='@Url.Action("AddToCart", "Cart", new { id = item.Id, qty = // I DON'T KNOW HOW TO PASS IT HERE // })' class="addProductToCartBtn btn btn-success" value="Add to cart" />
</td>
</tr>
}
此代码在CartController中调用AddToCart方法:
$('.addProductToCartBtn').click(function (event) {
var url = $(this).data('url');
$.ajax({
url: url,
type: 'GET',
success: function (resultFrom_CartSummaryLine) {
// some logic here..
}
});
});
但是我无法将此方法传递给qty输入的值。我该怎么办?
要清楚这是CartController中我想传递qty参数值的方法:
public PartialViewResult AddToCart(CartModel cart, int id, int qty)
{
GetItemListProcedure_Result item = _itemRepository.GetItemByItemId(id).FirstOrDefault();
if (item != null)
{
cart.AddItem(item, qty);
}
return PartialView("_CartSummaryLine", cart);
}
答案 0 :(得分:0)
您也可以使用HTML帮助程序输入name="qty"
数字。像这样:
@Html.TextBoxFor(modelItem => modelItem.Quantity, new {type = "number"})
然后你应该能够像任何其他输入元素一样检索值。
这就是你所要求的吗?或者您是否需要通过JS检索此值?
编辑:
在JS方法中,您可以检索所有值。另外,将其设为POST ajax调用,这样您就不必在data-url
内获取URL。您只需在ajax调用中添加参数即可。还要在控制器操作方法上方添加[HttpPost]
属性。
$('.addProductToCartBtn').click(function (event) {
var url = $(this).data('url');
var idVal = $('[name="productIdCheckbox"]').val();
var qtyVal = $('#qty').val()
var cart = {
sLabel: $('#...'), //whatever your selector for this is
Text: $('#...'),
OEMcode: $('#...')
};
$.ajax({
url: url,
type: 'POST',
data: {cart: cart, id: idVal, qty: qtyVal},
success: function (resultFrom_CartSummaryLine) {
// some logic here..
}
});
});
});