注释在代码上有说明,具体的作用看说明便知了.
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);
}
}
}