2

これらは、カートに使用する 2 つのアクション結果です。

ajax を使用して製品 ID をセッション カートに追加する最初のアクション:

public ActionResult AddToCart(int ProductImageId)
{
    List<int> cart = (List<int>)Session["cart"];
    if (cart == null)
    {
        cart = new List<int>();
    }
    cart.Add(ProductImageId);

    Session["cart"] = cart;

    return new JsonResult() { Data = new { Status = "Success" } };
}

ビューで使用できるように、モデルに入力している 2 番目のアクション:

public ActionResult ShoppingCart()
        {
        var cart = Session["cart"] as List<int>;
        var products = cart != null ? cart.Select(id => 
             {
                 var productImage = repository.GetProductByID(id);
                 return new ProductsViewModel
                    {
                        Name = productImage.Products.Name,
                        Description = productImage.Products.Description.Substring(0, productImage.Products.Description.IndexOf(".") + 1),
                        price = productImage.Products.Price,
                        ProductId = productImage.Products.Id,
                        Image = productImage.ImageUrl,
                        ProductImageId = productImage.Id
                    };
             }) : new List<ProductsViewModel>();

      return View(products);
        }

現在、shoppingcart ビューに商品を表示するビューがあります。

表示されている各製品には、「削除」というボタンがあります。

私の質問は、セッション カートから製品を削除するにはどうすればよいですか?

Actionresult はどのように表示されますか?

誰かが削除ボタンをクリックしたときに削除する必要がある製品の ID を取得する Ajax スクリプトを作成しました。

 $(function () {
            $(".a").live("click", function () {
                var $this = $(this),
            ProductImageId = $this.data('ProductImageId');
                $.ajax({
                    url: '/Home/Action',  // <- I have not created a actionresult yet
                    type: "post",
                    cache: false,
                    data: { ProductImageId: ProductImageId },
                    success: function (data) {
                        data = eval(data);
                        $this.addClass('productSelected');
                    },
                    error: function (result) {
                        $(".validation-summary-errors").append("<li>Error connecting to server.</li>");
                    }

                });
            });

        });

受け取った ID で商品を削除したい場合、javascript で正しいと考えている場合、actionresult はどのように表示されますか?

次のようになるはずです。

public ActionResult DeleteProductFromCart(int ProductImageId)
{
 // code..
}

私がまだ正しいと思っている場合、括弧内にどのようにコーディングすればよいDeleteProductFromCartですか?

どんな種類の助けも大歓迎です。

4

2 に答える 2

2

add と非常に似ているはずだと思います。存在しないものをカートから削除しようとするのは論理的ではないため、追加のチェックを追加しました

public ActionResult DeleteProductFromCart(int ProductImageId)
{
    List<int> cart = (List<int>)Session["cart"];
    if (cart == null)
    {
        return new JsonResult() { Data = new { Status = "ERROR" } };
    }
    cart.Remove(ProductImageId);

    return new JsonResult() { Data = new { Status = "Success" } };
}
于 2012-10-31T14:33:43.847 に答える
1
public ActionResult DeleteProductFromCart(int ProductImageId)
{
    var cart = Session["cart"] as List<int>;
    cart.Remove(ProductImageId);

    ... return result
}
于 2012-10-31T14:33:08.540 に答える