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

没问题请看第二篇

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: E2E profile 01是一种用于在汽车系统传输信息的通信协议。它可以用于传输不同类型的数据,如控制指令、传感器数据和诊断信息。E2E profile 01使用基于时间的通信方式,可以在汽车网络传输高达 1Mbps 的数据速率。E2E profile 01是一种可扩展的协议,可以根据应用场景的不同进行调整。它可以与其他协议(如 CAN、LIN 等)相结合,以满足不同的通信需求。 ### 回答2: E2E profile 01是一种实现方式,将端到端测试作为一种软件开发过程的关键环节。它旨在确保整个系统在各个层面上的功能和性能都能够正常运行。 首先,在E2E profile 01的实现,我们需要明确系统的需求和功能。这包括了用户的需求、业务需求和系统需求等,以便针对这些需求进行测试。通过这样的方式,我们可以更好地了解系统的整体架构和业务流程。 其次,E2E profile 01的实现需要编写端到端的测试用例,用于模拟真实用户的操作流程。这些测试用例可以覆盖系统的各个功能模块,并且可以测试各个模块之间的交互和集成。通过这些测试用例的执行,我们可以验证系统的功能是否正常,并且可以发现潜在的问题和bug。 在实际的执行过程,我们可以使用自动化测试工具来进行端到端的测试。这样可以提高测试效率,减少人工测试的工作量。同时,自动化测试还可以提供更准确的测试结果和分析数据,有助于快速定位和解决问题。 最后,在E2E profile 01的实现,我们还需要进行性能测试。这可以确保系统在高负载情况下的稳定性和可靠性。通过性能测试,我们可以找出系统的瓶颈,并对其进行优化和改进。 总的来说,E2E profile 01实现是一种综合性的测试方法,能够全面评估系统的功能和性能。它可以帮助我们发现问题、优化系统,并提供更好的用户体验。最终,通过E2E profile 01的实施,我们可以确保软件系统的高质量和稳定性。 ### 回答3: E2E Profile 01是指针对特定用户的端到端(End-to-End)基本配置文件。实现E2E Profile 01需要考虑以下几个步骤: 首先,需要确立基本的用户需求和使用场景。这包括了用户的基本信息、设备使用情况、交互流程和系统要求等方面,以确保对用户需求的准确理解。 其次,根据用户需求,确定所需的技术组件和工具。这可能包括特定的软件和硬件设备、通信协议、编程语言和平台等等。根据组件和工具的要求,开发团队可以进行合理的选择和配置。 接着,进行系统开发和编码。根据用户需求和选择的技术组件,进行系统的逻辑设计实现。根据E2E Profile 01的要求,完成相应的编码工作,包括用户界面设计、功能开发、数据库配置和系统集成等等。 在编码完成后,进行系统调试和测试。通过模拟用户场景和输入数据,对系统进行全面测试和调试,以确保系统的正确性和稳定性。测试过程需要关注用户交互的各个环节,包括数据输入、处理和输出等等。 最后,进行系统发布和部署。根据用户的实际需求,将完成的系统进行发布和部署,确保用户可以正常使用系统。在发布和部署过程需要注意系统的安全性和可维护性,确保系统能够长期稳定运行。 总的来说,E2E Profile 01实现需要从用户需求和使用场景出发,通过选择合适的技术组件和工具,进行系统开发和编码,然后进行测试和调试,最后进行系统发布和部署。只有这样,才能确保E2E Profile 01的完整实现和用户满意度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值