我把购买的商品放到一个cookie里面
代码如下:
protected void rplist_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        if (e.CommandName == "buy")
        {
            string priductID = e.CommandArgument.ToString();
            Label lbpn = (Label)e.Item.FindControl("lbpn");
            Label lbpi = (Label)e.Item.FindControl("lbpi");
            Label lbpp = (Label)e.Item.FindControl("lbpp");            if (Request.Cookies["priduct"] != null)
            {
                string cookieValue = "";
                if (Request.Cookies["priduct"].Value.Contains(','))
                {
                    string[] str = Request.Cookies["priduct"].Value.Split(',');
                    int m = 0;
                    for (int i = 0; i < str.Length - 1; i++)
                    {
                        string[] value = str[i].Split('|');
                        string c = value[2];
                        if (c == priductID)
                        {
                            m = 1;
                            cookieValue += value[0] + "|" + value[1] + "|" + value[2] + "|" + value[3] + "|" +  (int.Parse(value[4]) + 1).ToString() + ",";
                        }
                        else
                        {
                            cookieValue += value[0] + "|" + value[1] + "|" + value[2] + "|" + value[3] + "|" +  value[4] + "";
                        }
                    }
                    if (m == 0)
                    {
                        string s = Request.Cookies["priduct"].Value + lbpn.Text + "|" + lbpi.Text + "|" + priductID + "|" + lbpp.Text + "|1|" + ",";
                        Response.Cookies["priduct"].Value = s;
                    }
                    else
                    {
                        Response.Cookies["priduct"].Value = cookieValue;
                    }
                }
            }
            else
            {
                HttpCookie hc = new HttpCookie("priduct");
                Response.Cookies.Add(hc);
                hc.Value = lbpn.Text + "|" + lbpi.Text + "|" + priductID + "|" + lbpp.Text + "|1|" + ",";
            }
            Response.Redirect("GuWuChe.aspx");
        }
    }然后再到另外一个页面取cookie
代码如下:
protected void Page_Load(object sender, EventArgs e)
    {
        AddProduct_Intro();
    }
    private void AddProduct_Intro()
    {
        int money = 0;
        ArrayList list = new ArrayList();
        if (Request.Cookies["priduct"] != null)
        {
            string[] carid = Request.Cookies["priduct"].Value.Split(',');
            for (int i = 0; i < carid.Length - 1; i++)
            {
                string[] cards = carid[i].Split('|');
                Product_Introes pi = new Product_Introes();
                pi.ProductName = cards[0];
                pi.Product_Intro = cards[1];
                pi.Product_Price = int.Parse(cards[3]);
                pi.Amount = int.Parse(cards[4]);
                money += int.Parse(cards[3]) * int.Parse(cards[4]);
                list.Add(pi);
            }        }
        rplist.DataSource = list;
        rplist.DataBind();
        lbMoneySum.Text = money.ToString();    }
//清空购物车
    protected void lbtnqingkong_Click(object sender, EventArgs e)
    {
        if (Request.Cookies["priduct"] != null)
        {
            Response.Cookies["priduct"].Value = null;
        }
    }
问题   我清空购物车了  再点购买的时候就购买不了了!!!请哪位高手指点下  谢谢!!!!

解决方案 »

  1.   

    购物车一般放入session比较好。
      

  2.   


    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;
    using System.Data.SqlClient;/// <summary>
    ///     cookie操作购物车的类  确实订单时连接数据库太频繁需要进行优化
    /// </summary>
    public class ShoppingManage
    {
        public ShoppingManage()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }
       // public static HttpCookie hc = null;
        public static String CookieName = "SHOPPING_INFO";    /// <summary>
        /// 添加商品进购物车
        /// </summary>
        /// <param name="productId"></param>
        /// <param name="num"></param>
        /// <returns></returns>
        public static bool AddProduct(int productId,int num)
        {
            HttpCookie hc = null;
            String oldCookieValue;
            String NewValue;
            hc = HttpContext.Current.Request.Cookies[CookieName];
            if (hc == null)             //如果Cookie不存在 则直接新建Cookie 保存商品id和数量;
            {
                hc = new HttpCookie(CookieName);
                hc.Expires = DateTime.Now.AddDays(7);
                hc.Value = productId.ToString() + "|" + num.ToString();
                        }
            else  //假设Cookie存在 则处理
            {
                oldCookieValue = hc.Value;
                 NewValue=AddCookieValue(oldCookieValue,productId,num);
                 hc.Value = NewValue;        }
            HttpContext.Current.Response.AppendCookie(hc); //Cookie写入Response 
            return true;                //结束
        }
        /// <summary>
        /// 已存在Cookie则追加商品
        /// </summary>
        /// <param name="Value"></param>
        /// <param name="NewProductId"></param>
        /// <param name="Num"></param>
        private static string AddCookieValue(string Value, int NewProductId, int Num)
        {
            String NewValue="";
            bool IsAdd = false;
            string[] productList = Value.Split(',');
            for (int i = 0; i < productList.Length; i++)
            {
                string[] productInfo = productList[i].Split('|');
                if (productInfo[0] == NewProductId.ToString())
                {
                    IsAdd = true;
                    NewValue += productInfo[0] + "|"+((int.Parse(productInfo[1])) + Num).ToString()+",";
                }
                else
                {
                    NewValue += productInfo[0] + "|" + productInfo[1] + ",";
                }        }
            if (IsAdd)
            {            NewValue = NewValue.Substring(0, NewValue.Length - 1);
            }
            else
            {
                NewValue += NewProductId.ToString() + "|" + Num.ToString();
            }        return NewValue;
        }    /// <summary>
        /// 获取购物车信息
        /// </summary>
        /// <returns></returns>
        public static string  GetShoppingInfo()
        {
            HttpCookie hc = null;
            String oldCookieValue;
            hc = HttpContext.Current.Request.Cookies[CookieName];
            if (hc == null)             //如果Cookie不存在 则直接新建Cookie 保存商品id和数量;
            {
                return null;
            }
            else
            {
                return hc.Value;
            }
        }   }
      

  3.   

    session也有问题  .net有回收机制 !! 有时候会出问题的