如何传递输入类型的值=" number"到Razor View中的JS

时间:2015-06-01 20:12:24

标签: razor asp.net-mvc-5

我有一个观点,这里是它的一个片段:

@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);
}

1 个答案:

答案 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..
            }
        });
    });
});