自己写的一个asp.net-cookies购物车类,作者:郑少群,来源:http://study.pctoday.net.cn

12/23/2009来源:ASP技巧人气:4850

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
//文章来源:http://study.pctoday.net.cn/2_asp.net.aspx
public class CookieShoppingCart
{

    /// <summary>
    /// 加入购物车
    /// </summary>
    /// <param name="PRoductID"></param>
    /// <param name="Quantity"></param>
    public static void AddToShoppingCart(int ProductID, int Quantity, int Box)
    {
        if (HttpContext.Current.Request.Cookies["ShoppingCart"] == null)
        {
            HttpCookie oCookie = new HttpCookie("ShoppingCart");
            //Set Cookie to expire in 3 hours
            oCookie.Expires = DateTime.Now.AddYears(3);
            oCookie.Value = ProductID.ToString() + ":" + Quantity.ToString() + ":" + Box.ToString();

            HttpContext.Current.Response.Cookies.Add(oCookie);
        }
        //如果cookie已经存在
        else
        {
            bool bExists = false;
http://www.egacn.com/
Replica Watches: Breitling, Cartier, Chanel, Longines, Rolex, Omega, Tag Heuer Watches On Sale
Buy Full Quality Popular Luxury Watches at Amazing Price, Your One Stop Discount Swiss Watches Store www.watchstylish.com
Exclusive Replica Rolex Watches, Tag Heuer Watches Replica, Cartier Watches online Sale!http://www.yuget.net
http://study.pctoday.net.cn/1_ASP.aspx
http://study.pctoday.net.cn/
郑少群博客
A Lange & Sohne
Audemars Piguet
Audi
Baume & Mercier
Bedat & Co
Blancpain
BMW
Breguet
Breitling
Bulgari
Cartier
Chanel
Chopard
Christian Dior
Concord
Corum
Ebel
Girard-Perregaux
Gucci
Honda
Hublot
IWC
Jacob & Co
Jaeger-LeCoultre
Longines
Louis Vuitton
Luminor Panerai
Mercedes Benz
Michele
MIGE
Montblanc
Movado
Omega
Oris
Panerai
Patek Philippe
Philip Stein
Piaget
Porsche Design
Rado
Raymond Weil
Richard Mile
Roger Dubuis
Roger Dubuis
Rolex
Romain Jerom
Tag Heuer
Tissot
U-Boat
Ulysse Nardin
Vacheron Constantin
Zenith
A Lange & Sohne
Accutron
Angular Momentum
Audemars Piguet
Baume & Mercier
Bedat & Co
Blancpain
Breguet
Breitling
Bulgari
Cartier
Chanel
Chopard
Christian Dior
Concord
Corum
Girard-Perregaux
Gucci
Hublot
IWC
JACQUES LEMANS
Jaeger-LeCoultre
Longines
Maurice Lacroix
Movado
Omega
Oris
Panerai
Patek Philippe
Piaget
Porsche Design
Rado
Raymond Weil
Richard Mille
Roger Dubuis
Rolex
Seiko
Swiss Army
Tag Heuer
Ulysse-Nardin
Vacheron Constantin
Zenith
A Lange & Sohne
Audemars Piguet
Baume & Mercier
Bedat & Co
Blancpain
Breguet
Breitling
Bulgari
Cartier
Chanel
Chopard
Christian Dior
Concord
Corum
Ebel
Girard-Perregaux
Gucci
Hublot
IWC
Jaeger-LeCoultre
Longines
MIGE
Movado
Omega
Oris
Panerai
Patek Philippe
Piaget
Porsche Design
Rado
Raymond Weil
Rolex
Tag Heuer
Ulysse Nardin
Vacheron Constantin
Zenith
郑少群资料库,计算机教程
郑少群资料库最新文章
ASP教程
ASP.net教程
Visual Studio教程
Ajax教程
jsp教程
java教程
Javascript教程
HTML-CSS教程
网络教程
多媒体教程
系统教程
数据库教程
J2ME教程
xml教程
            HttpCookie oCookie = (HttpCookie)HttpContext.Current.Request.Cookies["ShoppingCart"];
            oCookie.Expires = DateTime.Now.AddYears(3);
            string ShoppingCartStr = oCookie.Value.ToString();

            string[] arrCookie = ShoppingCartStr.Split(new char[] { ',' });
            //查看cookie中是否有该产品
            string newCookie = "";
            for (int i = 0; i < arrCookie.Length; i++)
            {
                if (arrCookie[i].Trim().Remove(arrCookie[i].IndexOf(':')) == ProductID.ToString().Trim())
                {
                    bExists = true;
                    string OldQuantity = arrCookie[i].Trim().Substring(arrCookie[i].Trim().IndexOf(':') + 1);//得到数量
                    OldQuantity = OldQuantity.Remove(OldQuantity.LastIndexOf(":"));
                    OldQuantity = (Convert.ToInt32(OldQuantity) + Quantity).ToString();
                    arrCookie[i] = arrCookie[i].Trim().Remove(arrCookie[i].IndexOf(':')) + ":" + OldQuantity + ":" + Box.ToString();
                    //HttpContext.Current.Response.Write(arrCookie[i].Trim().Remove(arrCookie[i].IndexOf(':')) + "已存在!数量:" + OldQuantity + "<br>");
                    //HttpContext.Current.Response.Write(arrCookie[i] + "<br>");
                }
                newCookie = newCookie + "," + arrCookie[i];
            }

http://www.egacn.com/
Replica Watches: Breitling, Cartier, Chanel, Longines, Rolex, Omega, Tag Heuer Watches On Sale
Buy Full Quality Popular Luxury Watches at Amazing Price, Your One Stop Discount Swiss Watches Store www.watchstylish.com
Exclusive Replica Rolex Watches, Tag Heuer Watches Replica, Cartier Watches online Sale!http://www.yuget.net
http://study.pctoday.net.cn/1_ASP.aspx
http://study.pctoday.net.cn/
郑少群博客
A Lange & Sohne
Audemars Piguet
Audi
Baume & Mercier
Bedat & Co
Blancpain
BMW
Breguet
Breitling
Bulgari
Cartier
Chanel
Chopard
Christian Dior
Concord
Corum
Ebel
Girard-Perregaux
Gucci
Honda
Hublot
IWC
Jacob & Co
Jaeger-LeCoultre
Longines
Louis Vuitton
Luminor Panerai
Mercedes Benz
Michele
MIGE
Montblanc
Movado
Omega
Oris
Panerai
Patek Philippe
Philip Stein
Piaget
Porsche Design
Rado
Raymond Weil
Richard Mile
Roger Dubuis
Roger Dubuis
Rolex
Romain Jerom
Tag Heuer
Tissot
U-Boat
Ulysse Nardin
Vacheron Constantin
Zenith
A Lange & Sohne
Accutron
Angular Momentum
Audemars Piguet
Baume & Mercier
Bedat & Co
Blancpain
Breguet
Breitling
Bulgari
Cartier
Chanel
Chopard
Christian Dior
Concord
Corum
Girard-Perregaux
Gucci
Hublot
IWC
JACQUES LEMANS
Jaeger-LeCoultre
Longines
Maurice Lacroix
Movado
Omega
Oris
Panerai
Patek Philippe
Piaget
Porsche Design
Rado
Raymond Weil
Richard Mille
Roger Dubuis
Rolex
Seiko
Swiss Army
Tag Heuer
Ulysse-Nardin
Vacheron Constantin
Zenith
A Lange & Sohne
Audemars Piguet
Baume & Mercier
Bedat & Co
Blancpain
Breguet
Breitling
Bulgari
Cartier
Chanel
Chopard
Christian Dior
Concord
Corum
Ebel
Girard-Perregaux
Gucci
Hublot
IWC
Jaeger-LeCoultre
Longines
MIGE
Movado
Omega
Oris
Panerai
Patek Philippe
Piaget
Porsche Design
Rado
Raymond Weil
Rolex
Tag Heuer
Ulysse Nardin
Vacheron Constantin
Zenith
郑少群资料库,计算机教程
郑少群资料库最新文章
ASP教程
ASP.net教程
Visual Studio教程
Ajax教程
JSP教程
Java教程
Javascript教程
HTML-CSS教程
网络教程
多媒体教程
系统教程
数据库教程
J2ME教程
XML教程
            //如果没有该产品
            if (!bExists)
            {
                oCookie.Value = oCookie.Value + "," + ProductID.ToString() + ":" + Quantity.ToString() + ":" + Box.ToString();
            }
            else
            {
                oCookie.Value = newCookie.Substring(1);
            }
            HttpContext.Current.Response.Cookies.Add(oCookie);
            HttpContext.Current.Response.Write("ShoppingCart:" + HttpContext.Current.Request.Cookies["ShoppingCart"].Value);

        }
    }


    /// <summary>
    /// 移除购物车子项
    /// </summary>
    /// <param name="ProductID"></param>
    public static void RemoveShoppingCart(int ProductID)
    {
        if (HttpContext.Current.Request.Cookies["ShoppingCart"] != null)
        {
            HttpCookie oCookie = (HttpCookie)HttpContext.Current.Request.Cookies["ShoppingCart"];
            oCookie.Expires = DateTime.Now.AddYears(3);
            //Check if Cookie already contain same item
            string ShoppingCartStr = oCookie.Value.ToString();

            string[] arrCookie = ShoppingCartStr.Split(new char[] { ',' });
            string[] arrCookie2 = new string[arrCookie.Length - 1];
            int j = 0;
            string NewStr = "";
            for (int i = 0; i < arrCookie.Length; i++)
            {
                if (arrCookie[i].Trim().Remove(arrCookie[i].IndexOf(':')) != ProductID.ToString())
                    NewStr = NewStr + "," + arrCookie[i];
            }
            if (NewStr == "")
                HttpContext.Current.Response.Cookies["ShoppingCart"].Value = "";
            else
                HttpContext.Current.Response.Cookies["ShoppingCart"].Value = NewStr.Substring(1);
        }
    }


    public static void UpdateShoppingCart(int ProductID, int Quantity, bool box)
    {
        int Box = 1;
        if (!box)
            Box = 0;
        if (HttpContext.Current.Request.Cookies["ShoppingCart"] != null)
        {
            bool bExists = false;
            HttpCookie oCookie = (HttpCookie)HttpContext.Current.Request.Cookies["ShoppingCart"];
            oCookie.Expires = DateTime.Now.AddYears(3);
            string ShoppingCartStr = oCookie.Value.ToString();

            string[] arrCookie = ShoppingCartStr.Split(new char[] { ',' });
            //查看cookie中是否有该产品
            string newCookie = "";
            for (int i = 0; i < arrCookie.Length; i++)
            {
                if (arrCookie[i].Trim().Remove(arrCookie[i].IndexOf(':')) == ProductID.ToString().Trim())
                    arrCookie[i] = arrCookie[i].Trim().Remove(arrCookie[i].IndexOf(':')) + ":" + Quantity.ToString() + ":" + Box.ToString();
                newCookie = newCookie + "," + arrCookie[i];
            }
            HttpContext.Current.Response.Cookies["ShoppingCart"].Value = newCookie.Substring(1);
        }
    }


    public static DataTable GetShoppingCart()
    {
        DataTable dt = new DataTable();
        if (HttpContext.Current.Request.Cookies["ShoppingCart"] != null && HttpContext.Current.Request.Cookies["ShoppingCart"].Value.Trim() != "")
        {
            HttpCookie oCookie = (HttpCookie)HttpContext.Current.Request.Cookies["ShoppingCart"];
            oCookie.Expires = DateTime.Now.AddYears(3);
            string ShoppingCartStr = oCookie.Value.ToString();
            //HttpContext.Current.Response.Write(ShoppingCartStr);
            string[] arrCookie = ShoppingCartStr.Split(new char[] { ',' });
            //查看cookie中是否有该产品
            string newCookie = "";
            for (int i = 0; i < arrCookie.Length; i++)
            {
                newCookie = newCookie + "," + arrCookie[i].Trim().Remove(arrCookie[i].IndexOf(':'));
            }
            newCookie = newCookie.Substring(1);
            dt = Product.GetProductByProductIds(newCookie, -1);
            dt.Columns.Add("Quantity");
            dt.Columns.Add("Box");

            foreach (DataRow row in dt.Rows)
            {
                for (int i = 0; i < arrCookie.Length; i++)
                {
                    if (arrCookie[i].Trim().Remove(arrCookie[i].IndexOf(':')) == row["ProductId"].ToString())
                    {
                        row["Quantity"] = arrCookie[i].Substring(arrCookie[i].IndexOf(":") + 1);
                        row["Quantity"] = row["Quantity"].ToString().Remove(row["Quantity"].ToString().IndexOf(":"));
                        string Box = arrCookie[i].Substring(arrCookie[i].LastIndexOf(":") + 1);
                        if (Box == "1")
                            row["Box"] = true;
                        else
                            row["Box"] = false;
                    }
                }
            }
        }
        else
        {
            dt = Database.GetDataTable("select top 0 * from View_ProductList");
            dt.Columns.Add("Quantity");
        }
        return dt;

    }

}


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zsq86/archive/2009/12/23/5061374.aspx