用Cookie和HashTable来实现购物车功能

注释在代码上有说明,具体的作用看说明便知了.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
namespace DAL
{
    /// <summary>
    /// 产品条目
    /// </summary>
    public class ItemEntity
    {
        public int ID;
        public string Name;
        public int Number;
    }
    public class Cart
    {
        /// <summary>
        /// 保存条目信息
        /// </summary>
        private Hashtable dic;
        public Cart()
        {
            if (System.Web.HttpContext.Current.Request.Cookies["Cart"] != null)
            {
                dic = new Hashtable();
                string val=System.Web.HttpContext.Current.Request.Cookies["Cart"].Value;
                ItemEntity Info;
                string[] temp = val.Split(new char[] { '@' }, StringSplitOptions.RemoveEmptyEntries);
                foreach (var item in temp)
                {
                    string[] temp2 = item.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                    Info = new ItemEntity();
                    Info.ID =Convert.ToInt32(temp2[0]);
                    Info.Name = temp2[1].ToString();
                    Info.Number = Convert.ToInt32(temp2[2]);
                    dic.Add(Info.ID, Info);
                }               

            }
            else
            {
                dic = new Hashtable();
            }
        }
        /// <summary>
        /// 添加条目
        /// </summary>
        /// <param name="Info"></param>
        public void Add(ItemEntity Info)
        {
            if (dic.ContainsKey(Info.ID))
            {
                dic.Remove(Info.ID);
                Info.Number = Info.Number + 1;
                dic.Add(Info.ID, Info);
                SaveCookie();
            }
            else
            {
                dic.Add(Info.ID, Info);
                SaveCookie();
            }

        }
        /// <summary>
        /// 获取具体条目
        /// </summary>
        /// <param name="ID"></param>
        /// <returns></returns>
        public ItemEntity GetItem(int ID)
        {
            if (dic.ContainsKey(ID))
            {
                return (ItemEntity)dic[ID];
            }
            return new ItemEntity();
        }
        /// <summary>
        /// 获取条目
        /// </summary>
        /// <returns></returns>
        public IList<ItemEntity> GetList()
        {
            IList<ItemEntity> List = new List<ItemEntity>();           
            foreach (var key in dic.Keys)
            {
                List.Add((ItemEntity)dic[key]);

            }
            return List;
        }
        /// <summary>
        /// 移动
        /// </summary>
        /// <param name="ID"></param>
        public void Remove(int ID)
        {
            if (dic.ContainsKey(ID))
            {
                dic.Remove(ID);
            }
            SaveCookie();
        }
        /// <summary>
        /// 修改数量
        /// </summary>
        /// <param name="ID"></param>
        /// <param name="Number"></param>
        public void Edit(int ID, int Number)
        {
            if (dic.ContainsKey(ID))
            {
                ItemEntity Info =(ItemEntity)dic[ID];
                dic.Remove(ID);
                Info.Number = Number;
                dic.Add(ID, Info);
                SaveCookie();
               
            }
        }

        /// <summary>
        /// 保存
        /// </summary>
        private void SaveCookie()
        {
          
            string s = string.Empty;
            ItemEntity Info;
            foreach (var item in dic.Keys)
            {
                Info=(ItemEntity)dic[item];
                s += Info.ID + "|" + Info.Name + "|" + Info.Number + "@";
            }
            HttpCookie cookie = new HttpCookie("Cart");
            cookie.Value = s;
            cookie.Expires.AddDays(30);          
            System.Web.HttpContext.Current.Response.Cookies.Add(cookie);

        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值