`
yfdong21
  • 浏览: 62098 次
  • 性别: 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 的这里先要了解一下。

没问题请看第二篇

分享到:
评论

相关推荐

    wap网站实例解析(编著:陈瑞镇、万宁)

    《wap网站实例解析》一书,由陈瑞镇和万宁编著,深入浅出地讲解了如何构建和设计适用于移动设备的WAP网站。书中包含了一系列实际操作的示例,帮助读者理解并掌握WAP网站开发的核心技术。 1. **网络花店实例** 这个...

    MyPetShop综合实例.ppt

    购物车模块采用Profile技术,允许匿名用户保存购物车,用户可以随时查看和修改购物车中的商品;订单处理模块则负责计算总价、接收用户订单信息以及处理支付。 5. **后台管理功能模块**:后台管理系统主要供管理员...

    ASP.NET四个经典实例源代码

    ASP.NET提供诸如 Membership 和 Profile API 来处理用户注册和个性化设置,使用ASP.NET State Management(比如Session和Cache)来保存用户购物车信息。支付接口通常集成PayPal、微信支付、支付宝等。数据库设计中会...

    Android集成facebook实例

    本文将详细讲解如何在Android项目中实现Facebook登录功能。 首先,为了集成Facebook SDK,我们需要在Facebook开发者平台上创建一个新应用,并获取App ID。登录Facebook开发者网站...

    ASP.NET 3.5动态网站开发案例指导

    - **购物车系统**:构建一个包含商品浏览、添加到购物车、结账等功能的电子商务网站。 - **论坛**:实现用户注册、登录、发帖、回帖等社区功能。 - **新闻发布系统**:设计一个可以发布、分类、搜索新闻的平台。 ...

    Microsoft .NET Pet Shop 4

    此外,还使用了ASP.NET 2.0的Profile Providers来管理用户状态,包括购物车信息等。 ##### 4. **Master Pages和新UI组件** 为了实现统一的界面风格,Pet Shop 4采用了ASP.NET 2.0中的Master Pages特性来替换原有的...

    PetShop详解

    4. **Profile Providers**:PetShop 4利用ASP.NET 2.0的Profile Providers来管理用户状态,包括购物车信息等,提供了强大的用户个性化设置功能。 5. **Master Pages**:引入Master Pages技术,实现统一的界面布局,...

    NET Pet Shop 4 架构与技术分析

    - **用户状态管理**:通过 ASP.NET 2.0 的 Profile Providers 来实现用户状态的管理,包括购物车等功能。Pet Shop 4 同时提供了针对 Oracle 和 SQL Server 的 Profile Providers。 - **统一的界面效果**:通过 ...

    微软的Petshop数据库(有数据)

    开发者可以通过分析其表结构和关系,了解如何实现电子商务系统的功能,如商品浏览、添加到购物车、结账和用户管理。此外,还可以通过连接这些数据库文件,使用SQL Server Management Studio等工具进行查询和数据操作...

    [电子商务]Asp.net简单网上商店.zip

    【电子商务】Asp.net简单网上商店是一个基于ASP.NET技术构建的电子商务平台实例,它展示了如何利用ASP.NET的核心功能和特性来开发一个基本的在线购物系统。这个项目可能包含商店的产品展示、购物车、用户注册与登录...

    asp.net2.0网络编程从入门到精通(源代码)

    - 经典实例:通过提供的源代码,深入分析实际项目中的应用场景,例如用户注册登录系统、在线购物车、新闻发布系统等。 通过本教程的学习,你将能够熟练运用ASP.NET 2.0进行网络编程,掌握从设计到实现的整个流程。...

    php电子商务网站-毕业设计.zip

    1. **源代码**:如`index.php`(主页面)、`cart.php`(购物车)、`checkout.php`(结账)、`admin.php`(后台管理)、`products.php`(商品列表)、`categories.php`(分类)、`profile.php`(用户账户)、`login....

    毕业设计-校园二手物品交易平台前端,主要使用Vue,Element-Plus。.zip

    本文将详细阐述这一平台的前端实现过程和技术要点。 Vue.js是当前非常流行的前端JavaScript框架,以其轻量级、组件化和易于上手的特点深受开发者喜爱。在这个项目中,Vue.js作为核心框架,负责处理页面的视图层和...

    petshop4.0

    - **单例模式 (Singleton Pattern)**:确保某些类只有一个实例,并提供全局访问点,例如缓存管理器。 - **策略模式 (Strategy Pattern)**:允许算法的变化独立于使用它的客户端,比如在消息处理中可以切换不同的消息...

    基于Asp的商品运输系统源码.zip

    【标题】"基于Asp的商品运输系统源码.zip"是一个包含Asp技术实现的商品运输管理系统的源代码包。这个系统可能被设计用于电子商务网站或物流公司的后台管理,以跟踪、管理和优化商品的配送过程。 【描述】这个描述...

    Vue实战硅谷外卖 Vue-router

    在`router/index.js`中,我们导入Vue Router并定义路由规则,如各个页面组件(Msite、Search、Order、Profile),然后在main.js中引入并挂载到Vue实例上。 4. **编码与测试**:在开发过程中,`npm run dev`会启动一...

    宠物商店V4.0版源码 (PetShop V4.0)

    包括购物车等 6。采用了Master Pages,取代了原来的用户控件,来实现统一的界面效果 7。使用了ASP.NET 2.0 Wizard控件实现check-out 8。使用了SqlCacheDependency来实现数据库层次的缓存更新(cache invalidation)...

    微软宠物商店代码分析

    - **单例模式**:用于确保某些类只有一个实例,并提供全局访问点,如配置管理类。 - **观察者模式**:在消息处理机制中,利用观察者模式来响应不同事件,实现了松耦合的设计。 #### 二、PetShop的深入解剖 **2.2.1...

    ASP.NET 2.0电子商务高级编程(C#2005版)

    Session、ViewState和Cookie是常见的状态管理机制,尤其在购物车、用户登录等功能中扮演重要角色。 6. **安全性**:电子商务系统必须处理敏感信息,如用户账号和支付详情。ASP.NET 2.0提供身份验证(Forms ...

Global site tag (gtag.js) - Google Analytics