日期:2014-05-17  浏览次数:20459 次

100分救急啊!!cookie购物车问题
当A用户在自己电脑上访问此购物网站,将商品添加到购物车中后,没提交订单,也没清空购物车,此时B用户也用自己电脑访问此购物网站,也将商品添加到购物车中 ,但是此时B的购物车中有A用户购物车的商品,这是怎么回事啊?貌似购物车是公用的?求解,下面贴代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Web;
using bldxw.DAL;

namespace bldxw.BLL
{
  public  class ShopCar
  {
      public static DataTable dt;
      /// <summary>
      /// 创建虚拟表
      /// </summary> 
      protected void BuildDataTables()
      {
          dt = new DataTable("Product");//新建一张商品表,表名为"Product"
       
          dt.Columns.Add(new DataColumn("ProductID"));    //商品编号
          dt.Columns.Add(new DataColumn("GoodsImageUrl"));//商品图片
          dt.Columns.Add(new DataColumn("ProductName"));  //商品名称
          dt.Columns.Add(new DataColumn("Size"));         //商品尺码
          dt.Columns.Add(new DataColumn("quantity"));     //购买数量
          dt.Columns.Add(new DataColumn("totalPrice"));   //商品总价
          dt.Columns.Add(new DataColumn("Price"));        //商品单价
          dt.PrimaryKey = new DataColumn[] { dt.Columns["ProductID"] }; //设置主键为ProductID

      }
      /// <summary>
      /// 查询购物车中的商品 
      /// </summary> 
      public DataTable GetProduct()
      {
          //判断cookie中是否存在数据
          if (HttpContext.Current.Request.Cookies["ShoppingCart"].Value=="")
          {
              if (dt == null)
              {
                  //如果虚拟表不存在则创建一个空的虚拟表
                  BuildDataTables();
              }
          }
          else
          {
              //如果cookie中存在数据则从cookie中加载数据到购物车
              ReadC