首先要了解什麼是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 的這裡先要了解一下。
沒問題請看第二篇