这是做ASP.NET网上商城项目时自己写的购物车类,因为我这个项目的在客户没注册,没有登录时也可去挑选自已喜欢的商品,这个购物车我是放大Session[""]数组中的,首先需要一个实体类,这个类中存放的是我将要在购物车中为客户保存商品的一些信息,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections;

/// <summary>
///CartGoods 的摘要说明
/// </summary>
public class CartGoods
{
    private int goodsID;                  //商品ID
    private int goodsNum;                //购买的商品的数量
    private string goodsName;            //购买的商品的名称
    private string goodsPhoto;            //购买的商品的图片路径
    private float goodsPrice;                  //购买的商品的价格

public int GoodsID
    {
        get
        {
            return goodsID;
        }
        set
        {
            this.goodsID = value;
        }
    }
    public int GoodsNum
    {
        get
        {
            return goodsNum;
        }
        set
        {
            this.goodsNum = value;
        }
    }
    public string GoodsName
    {
        get
        {
            return goodsName;
        }
        set
        {
            this.goodsName = value;
        }
    }
    public string GoodsPhoto
    {
        get
        {
            return goodsPhoto;
        }
        set
        {
            this.goodsPhoto = value;
        }
    }
    public float GoodsPrice
    {
        get
        {
            return goodsPrice;
        }
        set
        {
            this.goodsPrice = value;
        }
    }
}
public class MyCartGoods : List<CartGoods>            //这个类继承泛型的CartGoods类,这样是为了在后面向购物车中存放商品的时候不会漏掉商品信息
{
    public MyCartGoods()
    {
       
    }
}

下面的类是购物车主要的操作,(将商品加入购物车,查看购物车,删除购物车的不要的商品,修改购物车商品的数量,清空购物车)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.SessionState;
using System.Collections;
using System.Data;
using System.Data.SqlClient;

/// <summary>
///CartClass 的摘要说明
/// </summary>
public class CartClass
{
    HttpSessionState session;    //此处申明一个HttpSessionState类型的变量,名为session

public CartClass(HttpSessionState cSession)     //构造方法,在实例化此类时需要传一个Session是页面上的Session
 {
        this.session = cSession;
 }
    /// <summary>
    /// 购物车属性
    /// </summary>
    private MyCartGoods MyShoppingCart
    {
        get
        {
            object o = this.session["MyCart"];
            if (o == null)
            {
                InShoppingCart();
                return (MyCartGoods)session["MyCart"];
            }
            return (MyCartGoods)o;
        }
        set
        {
            this.session["MyCart"] = value;
        }
    }
//创建购物车
    public void InShoppingCart()
    {
        MyCartGoods shoppingCart = new MyCartGoods();
        session["MyCart"] = shoppingCart;
    }
    /// <summary>
    /// 将商品加入到购物车中,此处我传了购物中需要的变量,
      ///其实可以直接将泛型的那个对象传进来就行了不过需要在掉用此方法前将这些参数都加载到MyCartGoods中
    /// </summary>
    /// <param name="gid"></param>
    /// <param name="gname"></param>
    /// <param name="gphoto"></param>
    /// <param name="gprice"></param>
    ///
    public void AddToCart(int gid,string gname,float gprice,string gphoto)
    {
        CartGoods goods = new CartGoods();
        MyCartGoods tempCart = MyShoppingCart;
        if (tempCart.Count == 0)
        {
            goods.GoodsID = gid;
            goods.GoodsName = gname;
            goods.GoodsPrice = gprice;
            goods.GoodsPhoto = gphoto;
            goods.GoodsNum = 1;
            tempCart.Add(goods);
            MyShoppingCart = tempCart;
        }
        else
        {
            for (int i = 0; i < tempCart.Count; i++)
            {
                if (gid == tempCart[i].GoodsID)
                {
                    tempCart[i].GoodsNum += 1;
                    return;
                }
            }
            goods.GoodsID = gid;
            goods.GoodsName = gname;
            goods.GoodsPrice = gprice;
            goods.GoodsPhoto = gphoto;
            goods.GoodsNum = 1;
            tempCart.Add(goods);
            MyShoppingCart = tempCart;
        } 
    }
    /// <summary>
    /// 删除指定商品
    /// </summary>
    /// <param name="cartgood"></param>
    public void DelOneGoods(CartGoods cartgood)
    {
        MyCartGoods myCartGoods = MyShoppingCart;
        for (int i = 0; i < myCartGoods.Count; i++)
        {
            if (cartgood.GoodsID == myCartGoods[i].GoodsID)
            {
                myCartGoods.RemoveAt(i);
                MyShoppingCart = myCartGoods;
                break;
            }
        }
    }
    /// <summary>
    /// 清空购物车
    /// </summary>
    public void ClearMyCart()
    {
        int counter = MyShoppingCart.Count;
        MyShoppingCart.RemoveRange(0, counter);
    }
    /// <summary>
    /// 得到购物车中商品种类
    /// </summary>
    /// <returns></returns>
    public int GetPingZong()
    {
        return MyShoppingCart.Count;
    }
    /// <summary>
    ///计算购物车中商品的总价
    /// </summary>
    /// <returns></returns>
    public float GetZongJia()
    {
        MyCartGoods myCart = MyShoppingCart;
        float zongjia = 0;
        for (int i = 0; i < MyShoppingCart.Count; i++)
        {
            zongjia += (MyShoppingCart[i].GoodsNum * MyShoppingCart[i].GoodsPrice);
        }
        return zongjia;
    }
    /// <summary>
    /// 修改购物车中商品数量
    /// </summary>
    /// <param name="gid"></param>
    /// <param name="gnum"></param>
    public void UpdateGNum(int gid,int gnum)
    {
        MyCartGoods myCart = MyShoppingCart;
        for (int i = 0; i < MyShoppingCart.Count; i++)
        {
            if (gid == MyShoppingCart[i].GoodsID)
            {
                MyShoppingCart[i].GoodsNum = gnum;
            }
        }
    }
    //传对象的方法,上面说的传购物车对象的方法就是这个方法
    //public void AddToCart(CartGoods goods)
    //{
    //    MyCartGoods tempCart = MyShoppingCart;
    //    if (tempCart.Count == 0)
    //    {  
    //        goods.GoodsNum = 1;
    //        tempCart.Add(goods);
    //        MyShoppingCart = tempCart;
    //    }
    //    else
    //    {
    //        for (int i = 0; i < tempCart.Count; i++)
    //        {              
    //            if (goods.GoodsID == tempCart[i].GoodsID)
    //            {
    //                tempCart[i].GoodsNum += 1;
    //            }
    //            else
    //            {
    //                goods.GoodsNum = 1;
    //                tempCart.Add(goods);
    //                MyShoppingCart = tempCart;
    //            }             
    //        }
    //    }
    //}
    }

转载于:https://www.cnblogs.com/flora_asp_net/archive/2009/09/01/1558366.html

ASP.NET 购物车相关推荐

  1. ASP.NET购物车(源码下载)

    说明:该实例基于ASP.NET3.5使用Session实现购物车功能,数据库使用SqlServer2005.商品的分类以及产品的管理功能不在此实现. 希望该实例能对对购物车功能实现不太清楚的开发人员起 ...

  2. asp.net购物车,订单以及模拟支付宝支付(一)---购物车表及添加购物车流程

    在开发一个Web程序的时候用到了网购这个功能,上来分享并记录一下,以便以后忘记了可以自己看看(电脑东西太多,笔记都不知道放哪里去了啊啊啊啊啊!!!) 没有什么高并发量,什么什么技术理论,只是一个最最基 ...

  3. ASP.NET购物车Cookie获取,创建,添加,更新,删除的用法

    #region 添加购物车 public void GetShoppingCart(int skuId, int quanlity) { HttpCookie cookie = HttpContext ...

  4. 6月份Asp.net源码推荐

    整理了一下51aspx上6月份的Asp.net源码,特推荐一些给大家免费下载 - 阿江酷站统计系统ASP.Net修正版 Hits:262 2007-6-29 阿江酷站单用户访问统计系统ASP.Net修 ...

  5. Asp.net源码上周更新目录(5.12-5.18)

    按例每周更新,无他! - Asp.net购物车示例源码(VS2005)  Hits:322 2007-5-19 Asp.net购物车示例源码(VS2005) 可以实现购物车基本功能:在线购物.在线结算 ...

  6. [转] C#开源项目大全

    商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7-SDK E ...

  7. SwiftUI Macaw 如何修复Expression was too complex to be solved in reasonable time

    问题 Expression was too complex to be solved in reasonable time 解决方案 Swift对类型推断的使用使我们的代码更短,更易于阅读,但同时也占 ...

  8. C#开源大全--汇总(转)

    商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7-SDK E ...

  9. css 边缘闪光_CSS_用CSS控制的闪烁效果,  一段文本或一张图片,它 - phpStudy...

    用CSS控制的闪烁效果 一段文本或一张图片,它的周围有一圈光晕,这圈光晕每一秒钟闪烁一次,而当鼠标移到上面时,立即停止闪烁,当鼠标移开时又继续闪烁.这种效果用于那些需要特别引起别人注意的内容上(如:警 ...

最新文章

  1. 字符串截取固定长度的方法
  2. 近期笔试小结(附数据库工程师面试准备)
  3. Spring Boot 入门例子 Hello world - TerryHe 博客园
  4. 【Linux】——搭建redis
  5. jQuery的淡入和淡出简单介绍
  6. android 星级评论,Android自定义RatingBar(星级评分控件)
  7. 主题:的中间层框架 第一节
  8. 茴香豆的n种写法之②——Sql据多个条件 查询每个条件的前N条记录
  9. 计蒜客挑战难题:简单斐波那契
  10. MFC初探 —— 基于对话框的MFC显示控制台
  11. [转载] numpy逆 python_Python之Numpy详细教程,附Python最新学习资料
  12. 申请并部署阿里云SSL免费证书详细流程
  13. java excel 加密_Java 加密/解密Excel
  14. Windows server 2008 R2安装详细教程
  15. 游戏设计模式阅读笔记3——重访设计模式(观察者模式)
  16. 我所看到的印度软件业
  17. 沙漠之花--华莉丝·迪里
  18. 深度学习|迁移学习|强化学习
  19. linux作业管理系统pbs,集群上作业提交系统LSF和PBS的使用与简介
  20. VS Code 2022路线图:大量Spring Boot优化提上日程

热门文章

  1. python财务报表分析-浅谈利用Python分析财报找到值得投资的好公司的想法
  2. python如何读写文件-Python读写文件
  3. python与excel的差别-python3与Excel的完美结合
  4. python百度云资源-Python开发视频百度云分享
  5. 汇编和python-PyAsm-在python中嵌入汇编 | 学步园
  6. python3安装步骤mac-Mac 安装Python3
  7. python 代码-我整理的Python代码规则
  8. Linux中关于useradd、chmod、chown、getfacl、setfact等权限设置
  9. LeetCode ZigZag Conversion
  10. LeetCode Reconstruct Original Digits from English