.net購物車

.net購物車

DotNet寫的購物車,包含添加購物車、刪除購物車、修改購物車中產品數量,AJAX無刷新處理。

自己寫的一個asp.netcookies購物車類,實現購物車功能,可對購物車中的商品進行無刷新,統計商品數量和購買總額等。

首先建一個模型類,ShoppingCart.cs

privatestringtype;
///
///商品類型(p為一般商品,g為禮品)
///
publicstringType
{
get{returntype;}
set{type=value;}
}
privatestringid;
///
///商品編號
///
publicstringId
{
get{returnid;}
set{id=value;}
}
privatestringmenuID;
///
///欄目編號
///
publicstringMenuID
{
get{returnmenuID;}
set{menuID=value;}
}
privatestringproductImage;
///
///商品圖片
///
publicstringProductImage
{
get{returnproductImage;}
set{productImage=value;}
}
privatestringproductName;
///
///商品名稱
///
publicstringProductName
{
get{returnproductName;}
set{productName=value;}
}
privatedoublemarketPrice;
///
///市場價
///
publicdoubleMarketPrice
{
get{returnmarketPrice;}
set{marketPrice=value;}
}
privatedoubleprice;
///
///商城價
///
publicdoublePrice
{
get{returnprice;}
set{price=value;}
}
privatedoublememberPrice;
///
///會員價
///
publicdoubleMemberPrice
{
get{returnmemberPrice;}
set{memberPrice=value;}
}
privateintquantity;
///
///購買數量
///
publicintQuantity
{
get{returnquantity;}
set{quantity=value;}
}
privatedoublesubtotal;
///
///同款商品小計金額
///
publicdoubleSubtotal
{
get{returnsubtotal;}
set{subtotal=value;}
}

再建一個購物車的操作函式,包含添加商品,更新商品數量,刪除商品,清空購物車等方法:

#region全局變數參數
privateconststringcartName="ShoppingCart";//cookie中的購物車
#endregion
#region無參數的構造函式
///
///功能描述:無參數的構造函式
///
//publicCartFunction()
//{
//}
#endregion
#region獲取購物車信息
///
///功能描述:獲取購物車信息
///
///返回購物車信息
publicstringGetCartInfo()
{
if(HttpContext.Current.Request.Cookies[cartName]!=null)
{
returnHttpContext.Current.Request.Cookies[cartName].Value.ToString();
}
return"";
}
#endregion
#region判斷商品是否存在
///
///功能描述:判斷商品是否存在
///
///購物車內商品模型
///返回存在與否的bool值
privateboolIsExitProduct(ShoppingCartcart)
{
//存在的標誌:true有,false沒有
boolflag=false;
//得到購物車中的所有商品
stringproducts=GetCartInfo();
foreach(stringproductinproducts.Split('|'))
{
if(cart.Id==product.Replace(cart.Type,"").Trim().Split(','))
{
flag=true;
break;
}
}
returnflag;
}
#endregion
#region把商品添加到購物車
///
///功能描述:把商品添加到購物車
///
///購物車內商品模型
publicvoidAddProductToCart(ShoppingCartcart)
{
stringproduct=cart.Type+cart.Id+",";
stringnothing=string.Empty;
product+=cart.Quantity+",";
product+=cart.MarketPrice+",";
//product+=cart.MemberPrice+",";
product+=cart.Price+",";
product+=cart.MenuID+",";
product+=HttpUtility.UrlEncode(cart.ProductImage)+",";
product+=HttpUtility.UrlEncode(cart.ProductName)+",";
product+=cart.Subtotal;
//購物車中沒有該商品
if(!IsExitProduct(cart))
{
stringoldCar=GetCartInfo();
stringnewCar=null;
if(oldCar!="")
{
oldCar+="|";
}
newCar+=oldCar+product;
AddToCart(newCar);
}
else
{
//購物車中有此商品,即為更新商品數量
intcount=int.Parse(GetProductFromCart(cart).Split(',').ToString());
cart.Quantity+=count;
UpdateQuantity(cart,outnothing,outproduct);
}
}
#endregion
#region根據商品編號從購物車中獲取商品信息
///
///功能描述:根據商品編號從購物車中獲取商品信息
///
///購物車內商品模型
///返回商品信息
privatestringGetProductFromCart(ShoppingCartcart)
{
stringproductInfo=null;
//得到購物車中的所有商品
stringproducts=GetCartInfo();
foreach(stringproductinproducts.Split('|'))
{
if(cart.Id==product.Replace(cart.Type,"").Trim().Split(','))
{
productInfo=product;
break;
}
}
returnproductInfo;
}
#endregion
#region更新購買的商品數量
///
///功能描述:更新購買的商品數量
///
///購物車內商品模型
///單個商品小計金額
///購物車內商品字元串
publicvoidUpdateQuantity(ShoppingCartcart,outstringsubtotal,outstringproductStr)
{
//得到購物車
stringproducts=GetCartInfo();
products="|"+products+"|";
stringoldProduct="|"+GetProductFromCart(cart)+"|";
if(products!="")
{
stringoldCart=GetCartInfo();
stringnewProduct="|";
newProduct+=cart.Type+cart.Id+",";
newProduct+=cart.Quantity+",";
newProduct+=cart.MarketPrice+",";
//newProduct+=cart.MemberPrice+",";
newProduct+=cart.Price+",";
newProduct+=cart.MenuID+",";
newProduct+=HttpUtility.UrlEncode(cart.ProductImage)+",";
newProduct+=HttpUtility.UrlEncode(cart.ProductName)+",";
newProduct+=cart.Quantity*cart.Price+"|";
products=products.Replace(oldProduct,newProduct);
products=products.TrimStart('|').TrimEnd('|');
AddToCart(products);
}
subtotal=(cart.Quantity*cart.Price).ToString();
productStr=products;
}
#endregion
#region通過商品編號刪除商品紀錄
///
///功能描述:通過商品編號刪除商品紀錄
///
///購物車內商品模型
///返回購物車內餘下商品信息
publicvoidDeleteProduct(ShoppingCartcart,outstringproduct)
{
stringoldProduct=GetProductFromCart(cart);
oldProduct="|"+oldProduct+"|";
stringproducts=GetCartInfo();
if(products!="")
{
products="|"+products+"|";
products=products.Replace(oldProduct,"|");
products=products.TrimStart('|').TrimEnd('|');
}
AddToCart(products);
product=products;
}
#endregion
#region清空購物車
///
///功能描述:清空購物車
///
publicvoidClearCar()
{
AddToCart("");
}
#endregion
#region寫入Cookie中的購物車
///
///功能描述:寫入購物車
///產品信息
///
privatevoidAddToCart(stringproducts)
{
HttpCookieoCookieCart=newHttpCookie(cartName,products);
if(products=="")
{
oCookieCart.Expires=DateTime.Now.AddMonths(-3);
}
else
{
oCookieCart.Expires=DateTime.Now.AddMonths(3);
}
HttpContext.Current.Response.Cookies.Remove(cartName);
HttpContext.Current.Response.Cookies.Add(oCookieCart);
}
#endregion
#region給商品模型賦值
///
///功能描述:給商品模型賦值
///
///商品模型
///返回商品模型ShoppingCart
publicShoppingCartGetProductModel(ShoppingCartcart)
{
stringproduct=GetProductFromCart(cart);
if(product!=null)
{
cart=SetProductModel(product);
}
else
{
cart=SetProductModel(cart);
}
returncart;
}
#endregion
#region根據相應的參數對商品模型賦值
///
///功能描述:根據相應的參數對商品模型賦值
///
///商品模型
///返回商品模型ShoppingCart
publicShoppingCartSetProductModel(ShoppingCartcart)
{
Geengeem.BLL.Productbll=newGeengeem.BLL.Product();
Geengeem.MODEL.SelectParamssp=newGeengeem.MODEL.SelectParams();
if(cart.Type.Trim()=="p")
{
sp.S1="K_Product";
}
if(cart.Type.Trim()=="g")
{
sp.S1="K_Gift";
}
sp.S2=cart.Id;
DataTabledt=bll.GetList("getInfo",sp);
if(dt.Rows.Count>0)
{
//cart.Type=cart.Type;
cart.Id=dt.Rows["ID"].ToString();
cart.MenuID=dt.Rows["MenuID"].ToString();
cart.ProductName=dt.Rows["Title"].ToString();
cart.ProductImage=dt.Rows["SmallImg"].ToString();
cart.Price=Convert.ToDouble(dt.Rows["MarketPrice"].ToString());
cart.MarketPrice=Convert.ToDouble(dt.Rows["MarketPrice"].ToString());
//cart.MemberPrice=Convert.ToDouble(dt.Rows["MemberPrice"].ToString());
cart.Quantity=cart.Quantity;
cart.Subtotal=cart.Price*cart.Quantity;
}
returncart;
}
#endregion
#region根據商品字元串設定商品模型
///
///功能描述:根據商品字元串設定商品模型`
///
///商品信息字元
///返回商品模型ShoppingCart
publicShoppingCartSetProductModel(stringproductStr)
{
string[]arrProduct=productStr.Split(',');
ShoppingCartcart=newShoppingCart();
cart.Id=arrProduct.Replace("g","").Replace("p","").Trim();
cart.Quantity=Convert.ToInt32(arrProduct);
cart.MarketPrice=Convert.ToDouble(arrProduct);
//cart.MemberPrice=Convert.ToDouble(arrProduct);
cart.Price=Convert.ToDouble(arrProduct);
cart.MenuID=arrProduct;
cart.ProductImage=HttpUtility.UrlDecode(arrProduct);
cart.ProductName=HttpUtility.UrlDecode(arrProduct);
cart.Subtotal=Convert.ToDouble(arrProduct);
cart.Type=arrProduct.Replace(cart.Id,"").Trim();
returncart;
}
#endregion
#region獲取購物車Cookie信息,添加到購物車模型泛型
///
///功能描述:獲取購物車Cookie信息,添加到購物車模型泛型
///
///購物車內餘下商品信息
///處理結果值
///返回購物車模型泛型
publicListGetCartCookie(stringproduct,outstringresult)
{
intquantity=0;
doubletotal=0L;
ListlistCart=newList();
stringcart=product;
if(product=="")
{
cart=GetCartInfo();
}
if(cart!="")
{
string[]arrCart=cart.Split('|');
for(inti=0;i<arrCart.Length;i++)
{
ShoppingCartcartModel=SetProductModel(arrCart[i].ToString());
listCart.Add(cartModel);
}
}
//統計購買總數和購買總價
foreach(ShoppingCartitemCartinlistCart)
{
quantity+=itemCart.Quantity;
total+=itemCart.Subtotal;
}
result=quantity.ToString()+","+total.ToString();
returnlistCart;
}
#endregion

客戶的商業項目,時間有限,代碼性能上沒有做太多的最佳化,歡迎各位樓下點評。

相關詞條

相關搜尋

熱門詞條

聯絡我們