1

コントローラーへのパラメーターとして値を取得し、HTMLを5月のカートテーブルに送り返すjquery ajax関数があります。

    $(document).ready(function () {
    $(".Quantity").change(function () {
        var ProID = $(this).attr("data");
        var Quatity = $(".Quantity").val();
        $.ajax({
            type: "GET", url: "/Cart/UpdateValue", data: { ProID: ProID, quantity: Quatity },
            success: function (data) {
                $(".cart_box").html(data);

            }
        }
            );
    });
});

だから私の見解では

<tbody>
                @foreach (var line in Model.Cart.Lines)
                {
                    <tr>

                        <td>@line.Product.Name
                        </td>
                        <td style="text-align: center; padding: 0">@Html.DropDownList("Quantity", new SelectList(ViewBag.Items as System.Collections.IList, "Value", "Text", line.Quantity.ToString()), new { data=line.Product.ProductID ,@class="Quantity"})</td>
                        <td>@string.Format("{0:00,0 VNĐ}", line.Product.Price)</td>
                        <td>@string.Format("{0:00,0 VNĐ}", (line.Quantity * line.Product.Price))</td>
                        <td>Button</td>
                    </tr>
                }

            </tbody>`

ドロップダウンリストの値を変更すると、最初の行で 1 回だけ発生します。誰かが私の間違いを教えてもらえますか? 編集:これはカートインデックスビューの私のコントローラーです:

 public ViewResult Index(string returnUrl)
    {
        List<SelectListItem> items = new List<SelectListItem>();
        for (int i = 1; i <= 10; i++)
        {
            items.Add(new SelectListItem { Text = i.ToString(), Value = i.ToString() });
        }
        ViewBag.Items = items;
        return View(new CartIndexViewModel { Cart = GetCart(), ReturnUrl = returnUrl });
    }

これは、ajaxがリクエストを成功させたときのコントローラーです。

public PartialViewResult UpdateValue(int ProID, int quantity)
    {
        List<SelectListItem> items = new List<SelectListItem>();
        for (int i = 1; i <= 10; i++)
        {
            items.Add(new SelectListItem { Text = i.ToString(), Value = i.ToString() });
        }
        ViewBag.Items = items;
        Product product = repository.Products.FirstOrDefault(p => p.ProductID == ProID);
        if (product != null)
        {
            GetCart().UpdateItem(product, quantity);

        }
        CartIndexViewModel ptview = new CartIndexViewModel {Cart=GetCart(),ReturnUrl="/"};
        return PartialView(ptview);
    }
4

1 に答える 1

0

成功の中で古いリストを新しいリストに置き換えているようです-

その場合、次のようなイベント委任を試すことができます-

$(document.body).on('change','.Quantity',function () {
于 2013-07-29T08:38:12.813 に答える