使用cookie实现购物车

下面的代码将商品添加到cookie中,这里就不再编写添加商品到购物车的页面流程,而是直接使用代码实现

HttpCookie cookie = new HttpCookie("shop");
            //cookie.values集合能够存储多个键值对,其中add方法的第一个参数是商品编号,第二个参数是商品名称和价格,中间用都好分隔。
            cookie.Values.Add("1", "电脑,2000");
            cookie.Values.Add("2", "电视,2200");
            cookie.Values.Add("3", "冰箱,2300");
            cookie.Expires = DateTime.Now.AddDays(1);
            Response.Cookies.Add(cookie);

好,上面已经将购买的商品添加到购物车中。其中使用了cookie的values集合,第一个参数是商品编号,第二个参数是商品名称和价格。

第二步是显示购物车

/// <summary>
        /// 显示购物车
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button2_Click(object sender, EventArgs e)
        {

            LoadShop();
        }
        //显示购物车
        private void LoadShop()
        {
            //首先判断名称为"shop"的cookie是否存在
            if (Request.Cookies["shop"] != null)
            {
                HttpCookie cookie = Request.Cookies["shop"];
                StringBuilder sb = new StringBuilder();
                sb.Append("<table>");
                //便利此cookie的values集合,取出每一个键值对
                for (int i = 0; i < cookie.Values.Count; i++)
                {
                    sb.Append("<tr>");
                    sb.Append("<td>");
                    sb.Append("<a href=WebForm5.aspx?id=" + cookie.Values.AllKeys[i] + ">删除<a/>");
                    sb.Append("</td>");
                    sb.Append("<td>");
                    //获取每个键值对中的值
                    string[] shops = cookie.Values[i].Split(',');
                    //获取商品名称
                    sb.Append("<td>" + shops[0] + "</td>");
                    //获取商品价格
                    sb.Append("<td>" + shops[1] + "</td>");
                    sb.Append("</td>");
                    sb.Append("</tr>");
                }
                sb.Append("</table>");
                mydiv.InnerHtml = sb.ToString();
            }
        }

其中注释已经写的很清楚了。

第三步是删除购物车中商品

protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (!string.IsNullOrEmpty(Request.QueryString["id"]))
                {
                    string id = Request.QueryString["id"];
                    DeleteShop(id);
                }
            }
        }

        private void DeleteShop(string id)
        {
            if (Request.Cookies["shop"] != null)
            {
                HttpCookie cookie = Request.Cookies["shop"];

                cookie.Values.Remove(id);
                if (cookie.Values.Count == 0)
                {
                    cookie.Expires = DateTime.Now.AddDays(-1);
                }
                Response.Cookies.Add(cookie);
                LoadShop();
            }
        }


  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巴山却话

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值