`
yfdong21
  • 浏览: 60263 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

profile 实现购物车 实例(一)(转)

阅读更多

首先要了解什么是Profile,不了解就查下资料跟MSDN吧。

首先建立两个类,商品类跟购物车类。这个购物车类要进行存储。(这里的篇幅可能回很长,希望本着上进的朋友耐心看完,肯定会有收获的。我的代码都是从自己的项目中copy下来的,都是生成成功的代码)。

首先商品类---CartItem.cs。我定义了 商品的特征,id,name,price,imageurl,quntity(ID,名称,价格,图片URL,数量);

 

CartItem.cs 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>
/// CartItem 是购物车中的购物项
/// </summary>
///
//Serializable含义为CartItem的对象支持序列化,这样可以保存数据库当中
[Serializable]
public class CartItem
{
 public CartItem()
 {
  //
  // TODO: 在此处添加构造函数逻辑
  //
 }

    public CartItem(Guid id,string name,decimal price,string imageurl)
    {
        this.id = id;
        this.name = name;  
        this.price = price;
        this.imgurl=imageurl;

    }

    public CartItem(Guid id,string name,decimal price,int quantity,string imageurl)
    {
        this.id = id;
        this.name = name;
        this.price = price;
        this.quantity = quantity;
        this.imgurl = imageurl;
        //Url();
    }

    Guid id;
    string name;
    decimal price;
    int quantity=1;
    string imgurl;

    public string Imgurl
    {
        get { return imgurl; }
        set { imgurl = value; }
    }

 

    /// <summary>
    /// 只读的商品唯一编号
    /// </summary>
    public Guid Id
    {
        get { return id; }
      
    }
    public string Name
    {
        get { return name; }

    }
    public decimal Price
    {
        get { return price; }

    }


    public int Quantity
    {
        get { return quantity; }
        set { quantity = value; }
    }


}
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>
/// CartItem 是购物车中的购物项
/// </summary>
///
//Serializable含义为CartItem的对象支持序列化,这样可以保存数据库当中
[Serializable]
public class CartItem
{
 public CartItem()
 {
  //
  // TODO: 在此处添加构造函数逻辑
  //
 }

    public CartItem(Guid id,string name,decimal price,string imageurl)
    {
        this.id = id;
        this.name = name;  
        this.price = price;
        this.imgurl=imageurl;

    }

    public CartItem(Guid id,string name,decimal price,int quantity,string imageurl)
    {
        this.id = id;
        this.name = name;
        this.price = price;
        this.quantity = quantity;
        this.imgurl = imageurl;
        //Url();
    }

    Guid id;
    string name;
    decimal price;
    int quantity=1;
    string imgurl;

    public string Imgurl
    {
        get { return imgurl; }
        set { imgurl = value; }
    }

 

    /// <summary>
    /// 只读的商品唯一编号
    /// </summary>
    public Guid Id
    {
        get { return id; }
      
    }
    public string Name
    {
        get { return name; }

    }
    public decimal Price
    {
        get { return price; }

    }


    public int Quantity
    {
        get { return quantity; }
        set { quantity = value; }
    }

}

 

Cart.cs 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.Collections;
/// <summary>
/// Cart 购物车类
/// </summary>
///

[Serializable]
public class Cart
{
    Hashtable Items = new Hashtable();

    /// <summary>
    /// 返回购物车中商品的集合
    /// </summary>
    public ICollection CartItems
    {
        get
        {
            return  Items.Values;
        }
    }

    /// <summary>
    /// 返回购物车中商品的总价
    /// </summary>
    public decimal Total
    {
        get
        {
            decimal sum = 0;
            foreach (CartItem item in Items.Values)
            {
                sum += item.Price * item.Quantity;
            }
            return sum;
        }
    }

 public Cart()
 {
  //
  // TODO: 在此处添加构造函数逻辑
  //
 }

    /// <summary>
    /// 添加商品到购物车
    /// </summary>
    /// <param name="id">商品编号</param>
    /// <param name="name">商品名称</param>
    /// <param name="price">商品价格</param>
    public void AddItem(Guid id, string name, decimal price,string imageurl)
    {
        //添加商品步骤分析:1检查购物车中是否有该类商品已经存在,如果没有就向购物车增加该商品;2如果有该商品,那么就对已经存在的该商品,数量累加1

        CartItem item =(CartItem )Items[id];
        if (item == null)
        {
            Items.Add(id, new CartItem(id, name, price,imageurl));
        }
        else
        {
            item.Quantity++;
            Items[id] = item;
        }

    }

    /// <summary>
    /// 从购物车当中删除商品
    /// </summary>
    /// <param name="id">编号</param>
    public void RemoveItem(Guid id)
    {
        //删除商品:1将存在于购物车当中的商品数量减1;2判断该商品数量是否为0,如果为0,我们将该商品彻底从购物车中删除,否则就更新购物车;
        CartItem item = (CartItem)Items[id];
        if (item == null)
        {
            return;
        }

        item.Quantity--;
        if (item.Quantity == 0)
        {
            Items.Remove(id);
        }
        else
        {
            Items[id] = item;
        }
    }

    /// <summary>
    /// 将匿名用户的购物车,迁移到实名用户购物车的方法
    /// </summary>
    /// <param name="CItem"></param>
    public void AddCartItem(CartItem CItem)
    {
        CartItem item = (CartItem)Items[CItem.Id];
        if (item == null)
        {
            Items.Add(CItem.Id, new CartItem(CItem.Id, CItem.Name, CItem.Price, CItem.Quantity, CItem.Imgurl));
        }
        else
        {
            item.Quantity += CItem.Quantity;
            Items[CItem.Id] = item;
        }
    }
}
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.Collections;
/// <summary>
/// Cart 购物车类
/// </summary>
///

[Serializable]
public class Cart
{
    Hashtable Items = new Hashtable();

    /// <summary>
    /// 返回购物车中商品的集合
    /// </summary>
    public ICollection CartItems
    {
        get
        {
            return  Items.Values;
        }
    }

    /// <summary>
    /// 返回购物车中商品的总价
    /// </summary>
    public decimal Total
    {
        get
        {
            decimal sum = 0;
            foreach (CartItem item in Items.Values)
            {
                sum += item.Price * item.Quantity;
            }
            return sum;
        }
    }

 public Cart()
 {
  //
  // TODO: 在此处添加构造函数逻辑
  //
 }

    /// <summary>
    /// 添加商品到购物车
    /// </summary>
    /// <param name="id">商品编号</param>
    /// <param name="name">商品名称</param>
    /// <param name="price">商品价格</param>
    public void AddItem(Guid id, string name, decimal price,string imageurl)
    {
        //添加商品步骤分析:1检查购物车中是否有该类商品已经存在,如果没有就向购物车增加该商品;2如果有该商品,那么就对已经存在的该商品,数量累加1

        CartItem item =(CartItem )Items[id];
        if (item == null)
        {
            Items.Add(id, new CartItem(id, name, price,imageurl));
        }
        else
        {
            item.Quantity++;
            Items[id] = item;
        }

    }

    /// <summary>
    /// 从购物车当中删除商品
    /// </summary>
    /// <param name="id">编号</param>
    public void RemoveItem(Guid id)
    {
        //删除商品:1将存在于购物车当中的商品数量减1;2判断该商品数量是否为0,如果为0,我们将该商品彻底从购物车中删除,否则就更新购物车;
        CartItem item = (CartItem)Items[id];
        if (item == null)
        {
            return;
        }

        item.Quantity--;
        if (item.Quantity == 0)
        {
            Items.Remove(id);
        }
        else
        {
            Items[id] = item;
        }
    }

    /// <summary>
    /// 将匿名用户的购物车,迁移到实名用户购物车的方法
    /// </summary>
    /// <param name="CItem"></param>
    public void AddCartItem(CartItem CItem)
    {
        CartItem item = (CartItem)Items[CItem.Id];
        if (item == null)
        {
            Items.Add(CItem.Id, new CartItem(CItem.Id, CItem.Name, CItem.Price, CItem.Quantity, CItem.Imgurl));
        }
        else
        {
            item.Quantity += CItem.Quantity;
            Items[CItem.Id] = item;
        }
    }
}

这两个类简单的不能再简单了。哈希表,就是一个有键值对构成的表。我这里把商品的ID作为了key

接下来配置一下web.config文件,启用文中所说的Profile我们要存储的多项就是 Items 这个对象了。

所以profile节要这样配置

 

web.config

 <system.web>
  <anonymousIdentification enabled="true"/>
  <profile enabled="true" defaultProvider="Myprofile">
   <providers>
    <add name="Myprofile" type="System.Web.Profile.SqlProfileProvider" connectionStringName="AspNetDBConn"/>
   </providers>
   <properties>
    <add name="ShoppingCart" type="Cart" allowAnonymous="true" serializeAs="Binary"/>
   </properties>
  </profile>

</system.web>

注意!!这里的代码为配置文件的一部分---profile的部分

这样我们就能在项目的中的任何地方用

profile 的配置,这里就不在赘述了

profile.ShoppingCart .**** 访问Cart类的属性跟方法了

不能再写了,没了解过profile 的这里先要了解一下。

没问题请看第二篇

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics