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


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

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

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

    CartItem.csusing 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.csusing 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 的这里先要了解一下。

    没问题请看第二篇

  • 相关阅读:
    jedata日期控件的开始结束日期设置
    springMVC中对HTTP请求form data和request payload两种数据发送块的后台接收方式
    Java Code Examples for org.codehaus.jackson.map.DeserializationConfig 配置
    Struts 2与AJAX(第二部分)
    在Struts 2中实现文件上传
    Strus 2的新表单标志的使用
    在Struts 2中实现CRUD
    Struts 2与AJAX(第三部分)
    Struts 2中的OGNL
    GridView中实现自定义时间货币等字符串格式
  • 原文地址:https://www.cnblogs.com/cestbon/p/1667766.html
Copyright © 2020-2023  润新知