0

我正在开发购物车功能。我需要来自用于呈现购物车页面的服务器的产品数据。

每次点击 Add-to-cart 按钮时,我都会将此数组字符串化(使用 JSON.stringify() ):

  var CART = [{productId: 102, quantity: 3} , {productId: 211, quantity: 6}];

我想Request.Cookie["shoppingCart"]在我的 ASP.NET 应用程序中使用这些数据,但是当我调试时它总是null

这是我打电话时浏览器返回的内容document.cookie

"shoppingCart=[{\"productId\":101617121,\"quantity\":2}]"

在此处输入图像描述

但是,当我尝试将 cookie 的值更改为类似的值时:shoppingCart=testresultRequest.Cookie["shoppingCart"]则具有价值。

预先感谢您帮助我!

4

1 回答 1

0

我解决了。首先,我尝试删除一些特殊字符,它们是: ",.

然后Request.Cookie有了价值观。所以看起来 ASP.NET 只是在 cookie 值中除了这些字符。(如果我错了请告诉我)

我的解决方案不是转换 JSON 字符串,而是为购物车中的每个产品使用这个公式:var item = `{productId}:{quantity}`;

例如:

var sampleCookie = "11231:16:15121:8";

用 char 拆分字符串,:然后使用简单的代码来获取数据。

我的代码:

            string cookie = Request.Cookies["shoppingCart"];

            var cartItems = new List<CartItem>();
            if (cookie != null && cookie.Length > 0)
            {
                string[] values;
                values = cookie.Split(':');

                int i = 0;
                while (i < values.Length)
                {
                    cartItems.Add(new CartItem()
                    {
                        ProductId = values[i],
                        Quantity = Convert.ToInt32(values[i+1])
                    });

                    i += 2;
                }
            }
于 2021-06-04T03:42:04.720 回答