利用对象序列化将购物车保存在Cookie中
来源:互联网 发布:宇宙大爆炸之前 知乎 编辑:程序博客网 时间:2024/05/22 14:55
购物车类:ShopCart.cs(说明:主要利用hashtable保存商品对象)
原始地址: http://tech.it168.com/d/2008-05-08/200805080928738_1.shtml
using System;using System.Collections;/// <summary>/// 购物车类/// </summary>[Serializable]public class ShopCart{public Hashtable _CartItems = new Hashtable();/// <summary>/// 构造函数/// </summary> public ShopCart(){///to do something }/// <summary>/// 返回购物车中的所有商品(接口类型)/// </summary> public ICollection CartItems{get { return _CartItems.Values; }}/// <summary>/// 购物中所有商品的价格合计/// </summary> public double Total{get{double sum = 0;foreach (ShopCartItem item in _CartItems.Values){sum += ((item.Price * item.Quantity) + item.SendPrice);}return sum;}}/// <summary>/// 返回购物车里所有商品的数量/// </summary> public double TotalNum{get{double sum = 0;foreach (ShopCartItem item in _CartItems.Values){sum += item.Quantity;}return sum;}}/// <summary>/// 向购物车里添加某商品/// </summary>/// <param name="ID">商品ID</param>/// <param name="Name">商品名称</param>/// <param name="Price">商品单价</param>/// <param name="AutoAddQuantity">如果购物车中已经存在该商品,该商品的数量是否加一,True数量加1,False数量不变</param> public void AddItem(string ID, string Name, string DeliveryName, double Price, int Score, string ProductId, string PicUrl, double MarketPrice, double UserPrice, double VipPrice, double SendPrice,string ShopID, string UrlFrom, bool AutoAddQuantity){ShopCartItem item = (ShopCartItem)_CartItems[ID];if(item == null)_CartItems.Add(ID, new ShopCartItem(ID, Name, DeliveryName, Price, Score, ProductId, PicUrl, MarketPrice, UserPrice, VipPrice, SendPrice,ShopID, UrlFrom));else{if(AutoAddQuantity){item.Quantity++;}_CartItems[ID] = item;}}/// <summary>/// 从购物车里移除某商品/// </summary>/// <param name="ID">商品ID</param>/// <param name="FullDelete">如果商品数量大于1,是否彻底从购物车中删除该种商品,true彻底从购物车中删除该种商品,false则仅将该种商品数量减一</param> public void RemoveItem(string ID, bool FullDelete){ShopCartItem item = (ShopCartItem)_CartItems[ID];if(item == null){return;}else{if(FullDelete){_CartItems.Remove(ID);}else{item.Quantity--;if(item.Quantity == 0){_CartItems.Remove(ID);}else{_CartItems[ID] = item;}}}}/// <summary>/// 修改购物车里某商品的数量/// </summary>/// <param name="ID">商品ID</param>/// <param name="Quantity">商品数量</param> public void UpdateItem(string ID, int Quantity){ShopCartItem item = (ShopCartItem)_CartItems[ID];if(item == null){return;}else{if(Quantity > 0) //商品数量必须大于0 {item.Quantity = Quantity;}_CartItems[ID] = item;}}/// <summary>/// 清空购物车/// </summary> public void ClearCart(){_CartItems.Clear();}}/// <summary>/// [购物车具体]商品类/// </summary>[Serializable]public class ShopCartItem{private string _ID;//产品GUID private string _Name;//产品名称 private string _DeliveryName;//物流产品名 private double _Price=0;//产品单价(结算价格) private int _Score = 0;//产品单个积分 private int _Quantity = 1;//产品数量 private string _ProductId;//产品自定义编号 private string _PicUrl;//图片地址 private double _MarketPrice=0;//市场价格 private double _VipPrice=0;//VIp价格 private double _UserPrice=0;//会员价格 private double _SendPrice=0;//运输费用 private string _ShopID;//商家ID private string _UrlFrom; //页面来源/// <summary>/// 属性:商品ID/// </summary> public string ID{get { return _ID; }}/// <summary>/// 属性:商品名称Name/// </summary> public string Name{get { return _Name; }}/// <summary>/// 属性:商品单价Price/// </summary> public double Price{get { return _Price; }}/// <summary>/// 单件产品所获积分/// </summary> public int Score{get{return _Score;}set{_Score = value;}}/// <summary>/// 产品编号/// </summary> public string ProductId{get{return _ProductId;}set{_ProductId = value;}}/// <summary>/// 产品图片地址/// </summary> public string PicUrl{get{return _PicUrl;}set{_PicUrl = value;}}/// <summary>/// 市场价格/// </summary> public double MarketPrice{get{return _MarketPrice;}set{_MarketPrice = value;}}/// <summary>/// VIP价格/// </summary> public double VipPrice{get{return _VipPrice;}set{_VipPrice = value;}}/// <summary>/// 会员价格/// </summary> public double UserPrice{get{return _UserPrice;}set{_UserPrice = value;}}/// <summary>/// 运输费用/// </summary> public double SendPrice{get{return _SendPrice;}set{_SendPrice = value;}}/// <summary>/// 属性:商品数量Quantity/// </summary> public int Quantity{get { return _Quantity; }set { _Quantity = value; }}/// <summary>/// 商家ID/// </summary> public string ShopID {get { return _ShopID; }set { _ShopID = value; }}/// <summary>/// 页面来源/// </summary> public string UrlFrom{get { return _UrlFrom; }set { _UrlFrom = value; }}/// <summary>/// 购物车商品项完整构架函数/// </summary>/// <param name="ID">产品ID</param>/// <param name="Name">产品名称</param>/// <param name="DeliveryName">产品物流名称</param>/// <param name="Price">产品单价(计算价)</param>/// <param name="Score">产品积分</param>/// <param name="ProductId">产品编号</param>/// <param name="PicUrl">产品图片</param>/// <param name="MarketPrice">会员价格</param>/// <param name="UserPrice">市场价格</param>/// <param name="VipPrice">VIp价格</param>/// <param name="SendPrice">运输费用</param>/// <param name="ShopID">商家ID</param>/// <param name="UrlFrom">页面来源</param> public ShopCartItem(string ID, string Name, string DeliveryName, double Price, int Score, string ProductId, string PicUrl, double MarketPrice, double UserPrice, double VipPrice, double SendPrice, string ShopID, string UrlFrom){_ID = ID;_Name = Name;_DeliveryName = DeliveryName;_Quantity = 1;_Price = Price;_Score = Score;_ProductId = ProductId;_PicUrl = PicUrl;_MarketPrice = MarketPrice;_UserPrice = UserPrice;_VipPrice = VipPrice;_SendPrice = SendPrice;_ShopID = ShopID;_UrlFrom = UrlFrom;}/// <summary>/// 购物车商品项简单构架函数/// </summary>/// <param name="ID">产品ID</param>/// <param name="Name">产品名称</param>/// <param name="Price">产品单价(计算价)</param> public ShopCartItem(string ID, string Name, double Price){_ID = ID;_Name = Name;_DeliveryName = "";_Quantity = 1;_Price = Price;_Score = 0;_ProductId = "";_PicUrl = "";_MarketPrice = 0;_UserPrice = 0;_VipPrice = 0;_SendPrice = 0;_ShopID = "";_UrlFrom = "";}/// <summary>/// 购物车商品项构架函数/// </summary>/// <param name="ID">产品ID</param>/// <param name="Name">产品名称</param>/// <param name="Price">产品单价(计算价)</param>/// <param name="UrlFrom">页面来源</param> public ShopCartItem(string ID, string Name, double Price,string UrlFrom){_ID = ID;_Name = Name;_DeliveryName = "";_Quantity = 1;_Price = Price;_Score = 0;_ProductId = "";_PicUrl = "";_MarketPrice = 0;_UserPrice = 0;_VipPrice = 0;_SendPrice = 0;_ShopID = "";_UrlFrom = UrlFrom;}/// <summary>/// 购物车商品项标准构架函数/// </summary>/// <param name="ID">产品ID</param>/// <param name="Name">产品名称</param>/// <param name="Price">产品单价(计算价)</param>/// <param name="UrlFrom">页面来源</param>/// <param name="UrlFrom">页面来源</param> public ShopCartItem(string ID, string Name, double Price,string ShopID, string UrlFrom){_ID = ID;_Name = Name;_DeliveryName = "";_Quantity = 1;_Price = Price;_Score = 0;_ProductId = "";_PicUrl = "";_MarketPrice = 0;_UserPrice = 0;_VipPrice = 0;_SendPrice = 0;_ShopID = ShopID;_UrlFrom = UrlFrom;}}
测试页面:Demo.aspx后置代码Demo.aspx.cs文件:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Demo.aspx.cs" Inherits="Public_Test_Demo" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server"><title>无标题页</title></head><body><form id="form1" runat="server"><div><asp:Label ID="lblResult" runat="server" Text="Label"></asp:Label><br /><br /><asp:Button ID="btnReadCookie" runat="server" Text="读取Cookie中的ShopCart" OnClick="btnReadCookie_Click" /> </div></form></body></html>using System;using System.Collections;using System.Web;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;using System.IO;using System.Text;using CNTVS.TOOLS;public partial class Public_Test_Demo : System.Web.UI.Page{string CookieName = "ShopCart";protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){ShopCart SC = new ShopCart();SC.AddItem("1", "ProductName", "ProductName", 0, 0, "ProductID", "", 0, 0, 0, 0, "ShopId", "TestUrl", true);SC.AddItem("2", "ProductName123", "ProductName123", 0, 0, "ProductID123", "", 0, 0, 0, 0, "ShopId111", "TestUrl23", true);//将ShopCart对象写入Cookie IFormatter fm = new BinaryFormatter();Stream sm = new MemoryStream();fm.Serialize(sm, SC);sm.Seek(0, SeekOrigin.Begin);StreamReader reader = new StreamReader(sm);string strCart = reader.ReadToEnd();reader.Close();HttpCookie hc = new HttpCookie(CookieName);hc.Value = Server.UrlEncode(strCart);hc.Expires = DateTime.Now.AddDays(1);Response.Cookies.Add(hc);}}///// <summary>///// 将ShopCart写入Cookie///// </summary>///// <param name="SC">ShopCart对象</param>///// <param name="CookieName">CookieName,默认为ShopCart</param> //public static string ShopCartToCookie(ShopCart SC, string CookieName)//{// if (Utils.CheckNull(CookieName)) { CookieName = "ShopCart"; }// if (Utils.CheckNull(SC))// {// Utils.WriteCookie(CookieName, "");// return "";// }// else// {// IFormatter fm = new BinaryFormatter();// Stream sm = new MemoryStream();// fm.Serialize(sm, SC);// sm.Seek(0, SeekOrigin.Begin);// StreamReader reader = new StreamReader(sm);// string strCart = reader.ReadToEnd();// reader.Close();// Utils.WriteCookie(CookieName, strCart);// return strCart;// }//}///// <summary>///// 将Cookie反序列化为ShopCart///// </summary>///// <param name="CookieName">CookieName,默认为ShopCart</param> //public static ShopCart CookieToShopCart(string CookieName)//{// if (Utils.CheckNull(CookieName)) { CookieName = "ShopCart"; }// string StrCart = Utils.GetCookie(CookieName);// if (Utils.CheckNull(StrCart))// {// return null;// }// byte[] bt = System.Text.Encoding.Default.GetBytes(StrCart);// Stream sm = new MemoryStream(bt);// IFormatter fm = new BinaryFormatter();// ShopCart SC = (ShopCart)fm.Deserialize(sm);// if (Utils.CheckNull(SC))// {// return null;// }// else// {// return SC;// }//}protected void btnReadCookie_Click(object sender, EventArgs e){string StrCartNew = Server.UrlDecode(Request.Cookies[CookieName].Value.ToString());byte[] bt = System.Text.Encoding.Default.GetBytes(StrCartNew);Stream smNew = new MemoryStream(bt);IFormatter fmNew = new BinaryFormatter();ShopCart SCNew = (ShopCart)fmNew.Deserialize(smNew);foreach(ShopCartItem SCI in SCNew.CartItems){lblResult.Text += "<br/>产品名称:" + SCI.Name;}}}
- ASP.NET实例:利用对象序列化将购物车保存在Cookie中
- 利用对象序列化将购物车保存在Cookie中
- 利用对象序列化将购物车保存在Cookie中
- 使用JSON将购物车中的对象存到Cookie中
- 将对象保存在本地文件中实现
- javascript将Object Array 保存在 cookie中
- javascript将Object Array 保存在 cookie中
- "设为默认"按钮将内容保存在cookie中
- JSON类型数据转换为对象,并排除指定的属性.JAVA将购物车数据写入到cookie中
- ASP.NET通过序列化将对象保存到Cookies
- 购物车的数据是否应该保存在数据库中?
- 购物车的数据是否应该保存在数据库中?
- 购物车的数据是否应该保存在数据库中?
- 利用cookie和session实现购物记录和购物车
- 利用序列化将java对象深拷贝
- 利用serializable将对象保存到本地
- AJAX实现的购物车,使用Cookie保存。
- Ajax技术实现的购物车,使用Cookie保存。
- ubuntu11.04更新源
- Flex/Air将DataGrid数据导出为CSV/Excel格式
- 使用页面导出为Excel时格式的问题
- 利用CSS定位背景图片
- Linux下设置MongoDB开机自启动
- 利用对象序列化将购物车保存在Cookie中
- mongodb自启动脚本
- ubuntu安装mplayer
- poj1837 Balance
- archlinux下 xbindkeys使用技巧
- 软件产品线设计和软件复用
- 无法使用SQL Server Management Studio的找到Network Server
- 查看端口占用情况
- Cookie知识讲解