.net中cookies购物车的实现

1.这是用Cookie存储的购物车的几种常用的操作:
/// <summary>
/// 使用Cookie的购物车
/// </summary>
public class CookieCar {
    public const string COOKIE_CAR = "Car";     //cookie中的购物车
    /// <summary>
    /// 无参数的构造方法
    /// </summary>
    public CookieCar() {
    }
    /// <summary>
    /// 添加商品到购物车
    /// </summary>
    /// <param name="id"></param>
    /// <param name="quantity"></param>
    public void AddProductToCar(string id, string quantity) {
        string product = id + "," + quantity;
        //购物车中没有该商品
        if (!VerDictCarIsExit(id)) {
            string oldCar = GetCarInfo();
            string newCar = null;
            if (oldCar != "") {
                oldCar += "|";
            }
            newCar += oldCar + product;
            AddCar(newCar);
        }
        else {
            int count = int.Parse(GetProductInfo(id).Split(',')[1].ToString());
            UpdateQuantity(id, count + 1);
        }
    }
    /// <summary>
    /// 添加商品的数量
    /// </summary>
    /// <param name="id"></param>
    public void UpdateQuantity(string id, int quantity) {
        //得到购物车
        string products = GetCarInfo();
        products = "|" + products + "|";
        string oldProduct = "|" + GetProductInfo(id) + "|";
        if (products != "") {
            string oldCar = GetCarInfo();
            string newProduct = "|" + id + "," + quantity + "|";
            products = products.Replace(oldProduct, newProduct);
            products = products.TrimStart('|').TrimEnd('|');
            AddCar(products);
        }
    }
    /// <summary>
    /// 得到购物车
    /// </summary>
    /// <returns></returns>
    public string GetCarInfo() {
        if (HttpContext.Current.Request.Cookies[COOKIE_CAR] != null) {
            return HttpContext.Current.Request.Cookies[COOKIE_CAR].Value.ToString();
        }
        return "";
    }
    /// <summary>
    /// 根据ID得到购物车中一种商品的信息
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    private string GetProductInfo(string id) {
        string productInfo = null;
        //得到购物车中的所有商品
        string products = GetCarInfo();
        foreach (string product in products.Split('|')) {
            if (id == product.Split(',')[0]) {
                productInfo = product;
                break;
            }
        }
        return productInfo;
    }
    /// <summary>
    /// 加入购物车 
    /// </summary>
    private void AddCar(string product) {
        HttpCookie car = new HttpCookie(COOKIE_CAR, product);
        car.Expires = DateTime.Now.AddDays(7);
        HttpContext.Current.Response.Cookies.Remove(COOKIE_CAR);
        HttpContext.Current.Response.Cookies.Add(car);
    }
    /// <summary>
    /// 判断商品是否存在
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    private bool VerDictCarIsExit(string id) {
        //存在的标志: true 有, false 没有
        bool flag = false;
        //得到购物车中的所有商品
        string products = GetCarInfo();
        foreach (string product in products.Split('|')) {
            if (id == product.Split(',')[0]) {
                flag = true;
                break;
            }
        }
        return flag;
    }
    /// <summary>
    /// 通过商品编号删除订单
    /// </summary>
    /// <param name="id"></param>
    public void DeleteProduct(string id) {
        string oldProduct = GetProductInfo(id);
        oldProduct = "|"+oldProduct+"|";
        string products = GetCarInfo();
        if(products != "") {
            products = "|"+products+"|";
            products = products.Replace(oldProduct, "|");
            products = products.TrimStart('|').TrimEnd('|');
            AddCar(products);
        }
    }
    /// <summary>
    /// 晴空购物车
    /// </summary>
    public void ClearCar() {
        AddCar("");
    }
    /// <summary>
    /// 确认订单
    /// </summary>
    public void ConfirmOrder(System.Web.UI.Page page, double orderTotalPrice, User user) {
        //得到订单信息
        string products = GetCarInfo();
        if (products != "") {
            string message =null;
            if (ProductManager.OrderConfirm(products, orderTotalPrice, user, out message)) {
                ClearCar();
            }
            Javascript.Alert(page, message, "Default.aspx");
        }
        else {
            Javascript.Alert(page, "订单为空,请选择商品!", "ProductList.aspx");
        }
    }
}
/// <summary>
    /// 得到购物车数据
    /// </summary>
    public DataSet GetCarData(GridView gv) {
        string carInfo = new CookieCar().GetCarInfo();
        if (carInfo != "") {
            string sql = "";
            foreach (string product in carInfo.Split('|')) {
                int id = int.Parse(product.Split(',')[0].ToString());
                int buyCount = int.Parse(product.Split(',')[1].ToString());
                if (sql != "") {
                    sql += " union ";
                }
                sql += "select *, " + buyCount + " as buyCount, Price*" + buyCount + " as totalPrice from Products where Id = " + id;
            }
            TotalPrice(gv);       //计算总价
            return ProductManager.GetCarBySql(sql);
        }
        else {
            Javascript.GoError("购物车为空,请选择商品!");
        }
        return null;
    }
    /// <summary>
    /// 计算总价
    /// </summary>
    public double TotalPrice(GridView gv) {
        double totalCarPrice = 0d;
        foreach (GridViewRow row in gv.Rows) {
            int rowIndex = row.RowIndex;
            double totalPrice = double.Parse((gv.Rows[rowIndex].FindControl("lblTotalPrice") as Label).Text.ToString());
            totalCarPrice += totalPrice;
        }
        return totalCarPrice;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值