首页 > 解决方案 > 如何在 foreach (jquery) 中获取价值?

问题描述

我正在使用 jquery 和 asp.net (mvc) 制作购物车,在此我想添加一个功能,允许我更新特定产品的数量,为此我做了以下操作:

    <table>


            @{
                if (Request.IsAuthenticated)
                {
                    <tr>

                        <td style="width: 0px;"></td>
                        <td>Name</td>
                        <td></td>
                        <td>Qty</td>
                        <td>Price</td>
                        <td>Subtotal</td>
                       
                    </tr>
                    foreach (var item in Model.cart_product)
                    {

                        <tr>
                            <td style="width: 3px;">
                                <a type="button" class="close" aria-label="Close"
                                   onclick="eliminar(@item.IdCart_Product,@item.IdProduct)">
                                    <span aria-hidden="true">&times;</span>
                                </a>
                            </td>
                            <td>@Html.DisplayFor(Model => item.Products.Names, new { code = item.IdProduct })</td>
                            <td></td>
                            <td>

                                <div class="quantity buttons_added">
                                    <input type="number" title="Qty" class="input-text qty text" size="4" id="quantity" value="@item.quantity">
                                    <input type="button" class=" btn btn-light" value="save" onclick="Update(@item.IdCart_Product,@item.IdProduct)">
                                </div>

                            </td>

                            <td>$@Html.DisplayFor(Model => item.Products.Price, new { code = item.IdProduct })</td>
                            <td>$@Html.DisplayFor(Model => item.SubTotal, new { code = item.IdProduct })</td>
                        </tr>
                    }

                    <tr class="total">

                        <td style="width: 0px;"></td>
                        <th>Total</th>
                        <td></td>
                        <td ></td>
                        <td></td>
                        <td>$@ViewBag.total </td>
                    </tr>

                }

            }


        </table>

 function Update(IdCartProduct,IdProduct) {
        var quantity = $("#quantity").val();
        var url = "@Url.Action("UpdateCart","Cart")";
        var url2 = "@Url.Action("CartInf","Cart")";
        var data = { IdCartProduct: IdCartProduct, quantity: quantity, IdProduct, IdProduct }
       
        $.post(url, data).done(function (Answer) {

               swal({
                                title: "Deleted",
                                text: Answer,
                                type: "success",
                                confirmButtonClass: 'btn-success',
                                confirmButtonText: 'Ok',
                                
               });
             $.get(url2).done(function (answer) {

                 $("#myCart2").html(answer);
                 document.getElementById("myCart").style.display = "block";

             });

        });

    }

public JsonResult UpdateCart(int? IdCartProduct, int? quantity, int? IdProduct)
        {
            var ServerAnswer = "Cart updated";
            Cart_Product cartProducts = db.Cart_Product.Find(IdCartProduct);
          
            //getting product stock
            var QueryProducts= (from Products in db.Products
                                     where Products.IdProduct == IdProduct
                                     select Products).FirstOrDefault();

            // if the product dosent have enough products in the stock, send error answer
            if (QueryProducts.Stock>=quantity)
            {
                cartProducts.quantity = quantity;
                cartProducts.SubTotal = QueryProducts.Price * cartProducts.quantity;
                ServerAnswer = "Cart updated";
                db.SaveChanges();

            }
            else
            {
                ServerAnswer = "We just have " + QueryProducts.Stock + " products in the stock ";

            }

            db.SaveChanges();
                              
            return Json(ServerAnswer);

        }

该函数符合我想要的,但是当获取“数量”字段的值时,它只返回列表中第一项的值,我希望当用户编辑有问题的字段时,用几句话编辑相同的字段我需要根据产品的内容来获取字段的值,但是对此我不知道该怎么做

这就是它的外观,我想保存特定输入的数量,但它只取第一个值图像

标签: javascriptjqueryajaxasp.net-mvcasp.net-ajax

解决方案


推荐阅读