asp.net+JS+COOKIES实现健壮的购物车
如果你已经看明白了上面的购物车添加商品的JS代码,那么你应该知道我们将如何来读取购物车内的物品了。前面我提到过带有子键的COOKIES,大家知道ASP.NET中,COOKIES是可以分组的,结构类似于:
["A1"]["11111"]
["A1"]["22222"]
["A1"]["33333"]
上面的A1是一个COOKIES组,后面的111,222分别是这个组下面的子键,之前我们的JS在增加商品进入COOKIES的时候就是这样来存储的。每个商品的ID作为一个子键,然后商品的其他属性即为该子键的COOKIES值。那么你可能想问:多个属性是怎么存储的呢?很简单,直接把多个属性值用"|"隔开即可。
["carList"]["120"]="充气娃娃|5|500.50|cqww.jpg" //就类似于这种结构了
以下给出ASP.NET来读取购物车中所有物品的代码,其实就那么一小段:
public ArrayList GetItems()
{
HttpCookie c = HttpContext.Current.Request.Cookies["carList"];
ArrayList items = new ArrayList();
for (int i = 0; i < c.Values.Count; i++)
{
string[] vals = c.Values.Split('|');
MY_Shop.Model.CShoppingCartItem item = new MY_Shop.Model.CShoppingCartItem();
item.ProductID = int.Parse(vals[0]);
item.Quantity = int.Parse(vals[1]);
item.ProductName = HttpContext.Current.Server.UrlDecode((string)vals[2]);
item.ImgUrl = HttpContext.Current.Server.UrlDecode((string)vals[3]);
item.Price_s = decimal.Parse(vals[4]);
items.Add(item);
}
return items;
}
了解三层开发的朋友应该知道,上面代码中的MY_Shop.Model.CShoppingCartItem类实际上就是个实体类。为了不让新手感到迷惑,下面贴出实体类的代码:
using System;
namespace MY_Shop.Model
{
public class CShoppingCartItem : IShoppingCartItem
{
private int intProductID;
private string strProductName;
private string strImgUrl;
private int intQuantity;
private decimal decPrice_s;
public int ProductID
{
get
{
return intProductID;
}
set
{
intProductID = value;
}
}
public string ProductName
{
get
{
return strProductName;
}
set
{
strProductName = value;
}
}
public string ImgUrl
{
get
{
return strImgUrl;
}
set
{
strImgUrl = value;
}
}
public int Quantity
{
get
{
return intQuantity;
}
set
{
intQuantity = value;
}
}
public decimal Price_s
{
get
{
return decPrice_s;
}
set
{
decPrice_s = value;
}
}
}
} from:asp学习网/title:asp.net+JS+COOKIES实现健壮的购物车/ time:2007-11-30 0:34:35
本文主题COOKIE,购物车