购物车序列化

  网上找到的一个购物车类,但是经过反复的测试,发现其中序列化后数据会出现问题,改成以下的模块就正常了。

ExpandedBlockStart.gif 代码
  ///   <summary>
        
///  将ShoppingCart写入Cookie
        
///   </summary>
        
///   <param name="SC"> ShoppingCart对象 </param>
        
///   <param name="CookieName"> CookieName,默认为ShoppingCart </param>
         public   static   string  ShopCartToCookie(ShoppingCart SC,  string  CookieName)
        {
            
if  (CookieName  ==   null   ||  CookieName == "" ) { CookieName  =   " ShoppingCart " ; }
            
if  (SC  ==   null )
            {
                WriteCookie(CookieName, 
"" , 148 );
                
return   "" ;
            }
            
else
            {
                IFormatter fm 
=   new  BinaryFormatter();
                MemoryStream sm 
=   new  MemoryStream();
                fm.Serialize(sm, SC);
                
byte [] bty  =   new   byte [sm.Length];
                bty 
=  sm.ToArray();
                
string  strCart  =  Convert.ToBase64String(bty);
                strCart 
=  System.Web.HttpContext.Current.Server.UrlEncode(strCart);
                WriteCookie(CookieName, strCart,
148 );
                
return  strCart;
            }
        }


        
///   <summary>
        
///  将Cookie反序列化为ShopCart
        
///   </summary>
        
///   <param name="CookieName"> CookieName,默认为ShopCart </param>
         public   static  ShoppingCart CookieToShopCart( string  CookieName)
        {
            
if  (CookieName  ==   null   ||  CookieName == "" ) { CookieName  =   " ShoppingCart " ; }
            
string  StrCart  =  System.Web.HttpContext.Current.Server.UrlDecode(GetCookie(CookieName));
           
            
if  (StrCart == null || StrCart == "" )
            {
                
return   null ;
            }
            
byte [] bt  =  Convert.FromBase64String(StrCart);
            Stream sm 
=   new  MemoryStream(bt);
            IFormatter fm 
=   new  BinaryFormatter();
            ShoppingCart SC 
=  (ShoppingCart)fm.Deserialize(sm);
            
if  (SC == null )
            {
                
return   null ;
            }
            
else
            {
                
return  SC;
            }
        }

 

 

转载于:https://www.cnblogs.com/bandy/archive/2010/03/04/1678404.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值