这是做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;
// }
// }
// }
//}
}