- 浏览: 60451 次
- 性别:
- 来自: 广州
文章分类
最新评论
首先要了解什么是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 2171C#中怎么判断一个数组中是否存在某个数组值 作者: 李嘉 ... -
C#开发和调用Web Service (转)
2011-08-12 22:43 11571.1 、 Web Service 基 ... -
profile 实现购物车 实例(二)(转)
2011-07-29 14:27 1036上个例子,我见了两个类,一个商品类。一个购物车类。并把购物 ... -
Profile的简单的配置与操作(转)
2011-07-29 14:20 1021下面由我来给大家配置一个 Profile与 Profile ... -
Profile实现购物车(应用Profile)(转)
2011-07-29 14:15 994上面我已经介绍过了 Profile的配置和简单应用了,如果大 ... -
浅析Microsoft .net PetShop程序中的购物车和订单处理模块(Profile技术,异步MSMQ消息)
2011-07-29 11:55 1376对于Microsoft .net PetShop程序中的购物车 ... -
大型网站访问性能处理(转集)
2011-07-28 14:14 1046高性能网站性能优化与系统架构(ZT) 说说大型高并发高 ... -
不使用DalFactory和IDAL,支持多种数据库应用
2011-07-27 23:23 2MS的PetShop示例应用程序的“多层架构”被很多.NET开 ... -
ASP.NET页面刷新方法总结(顺便散分)
2011-07-07 15:17 1145先看看ASP.NET页面刷新的实现方法: 第一: ... -
c#将对象序列化为字符串和将字符串反序列化为对象
2011-06-30 11:23 1548c#将对象序列化为字符串和将字符串反序列化为对象 a ... -
provider: SQL 网络接口, error: 26 解决方法 图
2011-06-03 10:06 6549在建立与服务器的连接时出错。在连接到 SQL Server 2 ... -
Server.Execute和#include相异之处
2011-05-17 13:37 698server 是 ASP 中的一个内置对象, 有一个方法为 ... -
Response.Redirect(),Server.Transfer(),Server.Execute()的区别.docx
2011-05-17 11:48 11671 、 Response.Redirect(): ... -
win7下装不了vs2008的情况
2011-04-09 01:11 670vs2005与vs2008都是镜像文件 ,所以用了虚拟光驱,装 ... -
ASP.NET + SQL 分页存储过程以及对应的类
2011-03-21 16:57 973ASP.NET + SQL 分页存 ... -
ASP.NET 错误页处理
2011-03-19 21:46 983ASP.NET 提供三种用于在出现错误时捕获和响应错误的主 ... -
asp.net 伪静态 html 后面带参数
2011-03-16 21:22 2017例如:faq_1.html?id=2 相关设置请在网上 ... -
DataFormatString的使用
2011-01-05 09:16 844在 我们从业务逻辑层获得数据实体时候,接下来的事情就是要绑定 ... -
ASP.NET 伪静态 静态页 访问不了 方法
2010-12-31 11:14 1972本站基于asp.net+UrlRewriter来实现网站伪 ... -
五种常见的ASP.NET安全缺陷
2010-11-25 23:41 828保证应用程序的安全 ...
相关推荐
初学者必看! 本教程使用的哈希表结合Profile实现的AdventureWorks购物车!
asp.net profile实现的购物车,支持匿名购物,用户登录后可把匿名用户的购物迁移到实名用户的购物车中。并实现购物车持久化。
看过petshop的人肯定知道profile。这里是个简单的例子。用profile实现购买,删除,结账。
Asp.Net Ajax 购物车 利用Asp.Net的Profile属性,实现购物车
配置profile实现测试生产环境分离需要测试环境包时候gradlew assembleRelease-Dprofile=test (可加可不加) 如果需要别的环境gradlew assembleRelease -Dprofile=所对应的环境
用asp.net技术做的购物车
微软自定义内部类,可以扩充web 2.0 验证中需要扩展的属性
这篇文章主要介绍了Python性能分析工具Profile使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码优化的前提是需要了解性能瓶颈在什么地方,程序运行...
经典的购物车系统: 关键词: Internet 网上书店开发 购书系统 开发一套网上购书系统,可以让顾客通过浏览器浏览网站售书目录,从而挑选自己满意的图书,并下订单购买。而网站后台人员需要维护网站会员信息、书籍...
其中.bash_profile是最重要的一个配置文件,它在用户每次登录系统时被读取,里面的所有命令都会被bash执行。.profile(由Bourne Shell和Korn Shell使用)和.login(由C Shell使用)两个文件是.bash_profile的同义词,...
使用maven Profile实现多环境构建,详细请参考 :http://blog.csdn.net/u011781521/article/details/77899467
ProfileWebSite 使用Profile个性定义的实例。 <br>第15章(\C15) 示例描述:本章介绍.NET 2.0提供的个性UI。 MasterPageSample 使用母版页的案例。 NestedMasterPage 母版页嵌套的应用案例...
VsCode配置-profile
ASP.NET AJAX深入浅出系列课程(14):Profile Service的实现方式与扩展
.bash_profile .Desktop_en .kde .Xauthority .abcuser.dict .bashrc .Desktop_gb .kderc .Xdefaults .abcuser.rem .cshrc .gnome .lynx_cookies .bash_history Desktop .gnome-desktop .sawfish 3、-A 显示...
许多ASP.NET应用程序需要跨访问的用户属性跟踪功能,在ASP.NET1.1中,我们只能人工实现这一功能。但如今,使用 ASP.NET 2.0的Profile对象,这个过程变得异常简单。Stephen Walther将验证该对象,并向你展示如何使用...
Mesh Profile Bluetooth® Specification ▪ Revision: v1.0.1 ▪ Revision Date: 2019-01-21 ▪ Group Prepared By: Mesh Working Group ▪ Feedback Email: mesh-main@bluetooth.org Abstract: This ...