- 浏览: 62098 次
- 性别:
- 来自: 广州
文章分类
最新评论
首先要了解什么是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 的这里先要了解一下。
没问题请看第二篇
发表评论
-
C#中怎么判断一个数组中是否存在某个数组值 转
2011-10-20 10:02 2239C#中怎么判断一个数组中是否存在某个数组值 作者: 李嘉 ... -
C#开发和调用Web Service (转)
2011-08-12 22:43 11871.1 、 Web Service 基 ... -
profile 实现购物车 实例(二)(转)
2011-07-29 14:27 1058上个例子,我见了两个类,一个商品类。一个购物车类。并把购物 ... -
Profile的简单的配置与操作(转)
2011-07-29 14:20 1053下面由我来给大家配置一个 Profile与 Profile ... -
Profile实现购物车(应用Profile)(转)
2011-07-29 14:15 1021上面我已经介绍过了 Profile的配置和简单应用了,如果大 ... -
浅析Microsoft .net PetShop程序中的购物车和订单处理模块(Profile技术,异步MSMQ消息)
2011-07-29 11:55 1404对于Microsoft .net PetShop程序中的购物车 ... -
大型网站访问性能处理(转集)
2011-07-28 14:14 1082高性能网站性能优化与系统架构(ZT) 说说大型高并发高 ... -
不使用DalFactory和IDAL,支持多种数据库应用
2011-07-27 23:23 2MS的PetShop示例应用程序的“多层架构”被很多.NET开 ... -
ASP.NET页面刷新方法总结(顺便散分)
2011-07-07 15:17 1198先看看ASP.NET页面刷新的实现方法: 第一: ... -
c#将对象序列化为字符串和将字符串反序列化为对象
2011-06-30 11:23 1578c#将对象序列化为字符串和将字符串反序列化为对象 a ... -
provider: SQL 网络接口, error: 26 解决方法 图
2011-06-03 10:06 6618在建立与服务器的连接时出错。在连接到 SQL Server 2 ... -
Server.Execute和#include相异之处
2011-05-17 13:37 728server 是 ASP 中的一个内置对象, 有一个方法为 ... -
Response.Redirect(),Server.Transfer(),Server.Execute()的区别.docx
2011-05-17 11:48 12001 、 Response.Redirect(): ... -
win7下装不了vs2008的情况
2011-04-09 01:11 723vs2005与vs2008都是镜像文件 ,所以用了虚拟光驱,装 ... -
ASP.NET + SQL 分页存储过程以及对应的类
2011-03-21 16:57 1009ASP.NET + SQL 分页存 ... -
ASP.NET 错误页处理
2011-03-19 21:46 1009ASP.NET 提供三种用于在出现错误时捕获和响应错误的主 ... -
asp.net 伪静态 html 后面带参数
2011-03-16 21:22 2051例如:faq_1.html?id=2 相关设置请在网上 ... -
DataFormatString的使用
2011-01-05 09:16 884在 我们从业务逻辑层获得数据实体时候,接下来的事情就是要绑定 ... -
ASP.NET 伪静态 静态页 访问不了 方法
2010-12-31 11:14 2010本站基于asp.net+UrlRewriter来实现网站伪 ... -
五种常见的ASP.NET安全缺陷
2010-11-25 23:41 872保证应用程序的安全 ...
相关推荐
《wap网站实例解析》一书,由陈瑞镇和万宁编著,深入浅出地讲解了如何构建和设计适用于移动设备的WAP网站。书中包含了一系列实际操作的示例,帮助读者理解并掌握WAP网站开发的核心技术。 1. **网络花店实例** 这个...
购物车模块采用Profile技术,允许匿名用户保存购物车,用户可以随时查看和修改购物车中的商品;订单处理模块则负责计算总价、接收用户订单信息以及处理支付。 5. **后台管理功能模块**:后台管理系统主要供管理员...
ASP.NET提供诸如 Membership 和 Profile API 来处理用户注册和个性化设置,使用ASP.NET State Management(比如Session和Cache)来保存用户购物车信息。支付接口通常集成PayPal、微信支付、支付宝等。数据库设计中会...
本文将详细讲解如何在Android项目中实现Facebook登录功能。 首先,为了集成Facebook SDK,我们需要在Facebook开发者平台上创建一个新应用,并获取App ID。登录Facebook开发者网站...
- **购物车系统**:构建一个包含商品浏览、添加到购物车、结账等功能的电子商务网站。 - **论坛**:实现用户注册、登录、发帖、回帖等社区功能。 - **新闻发布系统**:设计一个可以发布、分类、搜索新闻的平台。 ...
此外,还使用了ASP.NET 2.0的Profile Providers来管理用户状态,包括购物车信息等。 ##### 4. **Master Pages和新UI组件** 为了实现统一的界面风格,Pet Shop 4采用了ASP.NET 2.0中的Master Pages特性来替换原有的...
4. **Profile Providers**:PetShop 4利用ASP.NET 2.0的Profile Providers来管理用户状态,包括购物车信息等,提供了强大的用户个性化设置功能。 5. **Master Pages**:引入Master Pages技术,实现统一的界面布局,...
- **用户状态管理**:通过 ASP.NET 2.0 的 Profile Providers 来实现用户状态的管理,包括购物车等功能。Pet Shop 4 同时提供了针对 Oracle 和 SQL Server 的 Profile Providers。 - **统一的界面效果**:通过 ...
开发者可以通过分析其表结构和关系,了解如何实现电子商务系统的功能,如商品浏览、添加到购物车、结账和用户管理。此外,还可以通过连接这些数据库文件,使用SQL Server Management Studio等工具进行查询和数据操作...
【电子商务】Asp.net简单网上商店是一个基于ASP.NET技术构建的电子商务平台实例,它展示了如何利用ASP.NET的核心功能和特性来开发一个基本的在线购物系统。这个项目可能包含商店的产品展示、购物车、用户注册与登录...
- 经典实例:通过提供的源代码,深入分析实际项目中的应用场景,例如用户注册登录系统、在线购物车、新闻发布系统等。 通过本教程的学习,你将能够熟练运用ASP.NET 2.0进行网络编程,掌握从设计到实现的整个流程。...
1. **源代码**:如`index.php`(主页面)、`cart.php`(购物车)、`checkout.php`(结账)、`admin.php`(后台管理)、`products.php`(商品列表)、`categories.php`(分类)、`profile.php`(用户账户)、`login....
本文将详细阐述这一平台的前端实现过程和技术要点。 Vue.js是当前非常流行的前端JavaScript框架,以其轻量级、组件化和易于上手的特点深受开发者喜爱。在这个项目中,Vue.js作为核心框架,负责处理页面的视图层和...
- **单例模式 (Singleton Pattern)**:确保某些类只有一个实例,并提供全局访问点,例如缓存管理器。 - **策略模式 (Strategy Pattern)**:允许算法的变化独立于使用它的客户端,比如在消息处理中可以切换不同的消息...
【标题】"基于Asp的商品运输系统源码.zip"是一个包含Asp技术实现的商品运输管理系统的源代码包。这个系统可能被设计用于电子商务网站或物流公司的后台管理,以跟踪、管理和优化商品的配送过程。 【描述】这个描述...
在`router/index.js`中,我们导入Vue Router并定义路由规则,如各个页面组件(Msite、Search、Order、Profile),然后在main.js中引入并挂载到Vue实例上。 4. **编码与测试**:在开发过程中,`npm run dev`会启动一...
包括购物车等 6。采用了Master Pages,取代了原来的用户控件,来实现统一的界面效果 7。使用了ASP.NET 2.0 Wizard控件实现check-out 8。使用了SqlCacheDependency来实现数据库层次的缓存更新(cache invalidation)...
- **单例模式**:用于确保某些类只有一个实例,并提供全局访问点,如配置管理类。 - **观察者模式**:在消息处理机制中,利用观察者模式来响应不同事件,实现了松耦合的设计。 #### 二、PetShop的深入解剖 **2.2.1...
Session、ViewState和Cookie是常见的状态管理机制,尤其在购物车、用户登录等功能中扮演重要角色。 6. **安全性**:电子商务系统必须处理敏感信息,如用户账号和支付详情。ASP.NET 2.0提供身份验证(Forms ...