#region 添加购物车
public void GetShoppingCart(int skuId, int quanlity)
{

  HttpCookie cookie = HttpContext.Current.Request.Cookies["myCart"];//获取cookie

var reg = Session["userInfo"] as Registration; 用户登入状态

  #region  未登入状态时

if(reg == null)

  {

    if(cookie == null) //cookie为null时

{

      cookie = new HttpCookie("myCart");//创建cookie

cookie.Values.Add(skuId.ToString(), quanlity.ToString());//添加Cookie

cookie.Expires = DateTime.Today.AddDays(30);//设置Cookie的过期日期或时间

      Response.Cookies.Add(cookie);//将指定的cookie添加到此Cookie集合中

}

else if(cookie != null)

{

      if(cookie.Values.AllKeys.Contains(skuId.ToString()))//判断cookie中是否存在此键

{

        cookie.Values.Add(skuId.ToString(), quanlity.ToString());

        cookie.Expires = DateTime.Today.AddDays(30);

Response.Cookies.Add(cookie);

}

else

{

        cookie.Values[skuId.ToString()] = (Int32.Parse(cookie.Values[skuId.ToString()]) + quanlity).ToString();

        cookie.Expires = DateTime.Today.AddDays(30);

        Response.Cookies.Add(cookie);  

}

}

}

#endregion

}

#endregion

#region 更新购物车
public void UpdateShoppingCart(int skuId, int quanlity)
{

  HttpCookie cookie = HttpContext.Current.Request.Cookies["myCart"];

  Sku skuOne = CommodityInfoManager.GetSkuOneBySkuId(skuId.ToString());

var reg = Session["userInfo"] as Registration;

if(reg != null)//登入用户账号时,直接修改数据库中的购物车的数量

{

     ShoppingCarInfoManager.UpdateShoppingCartBySkuIdAndRegisterId(skuId, reg.RegisterId, quanlity); 

}

else

{

    cookie.Values[skuId.ToString()] = quanlity.ToString();//更新cookie中某一项的对应的cookie的值

cookie.Expires = DateTime.Today.AddDays(30);

Response.Cookies.Add(cookie);

}

}

#endregion

#region  删除购物车某一个商品

public void DeleteSkuId(int skuId, out int cookiState)
{

  cookiState = 1;

HttpCookie cookie = HttpContext.Current.Request.Cookies["myCart"];

var reg = Session["userInfo"] as Registration;

  #region 登录账号
  if (reg != null)
  {
    ShoppingCart shoppingCart = ShoppingCarInfoManager.GetShoppingCartById(skuId, reg.RegisterId);
    if (shoppingCart != null)
    {
    ShoppingCarInfoManager.DeletedShoppingCartBySkuIdAndRegisertId(skuId, reg.RegisterId);
    }
  }
  #endregion

  #region 未登录账号 

  else
  {

    if(cookie != null)

{

      if(cookie.Values.AllKeys.Length != 1)//判断cookie里有很多的键值对

{

        if(cookie.Values.AllKeys.Contains(skuId.ToString()))

        {

          cookie.Values.Remove(skuId.ToString());//移除cookie中指定的某一项

          cookie.Expires = DateTime.Today.AddDays(30);

          Response.Cookies.Add(cookie);

}

}

      else

      {

        cookie.Expires = DateTime.Now.AddDays(-1);//清除cookie  

        cookiState = 0;

          Response.Cookies.Add(cookie);  

}

}

}

  #endregion 

}

#endregion

#region 清空购物车
public void DeletedShoppingCart(out int cookiState)
{
  cookiState = 1;
  HttpCookie cookie = HttpContext.Current.Request.Cookies["myCart"];
  var reg = Session["userInfo"] as Registration;
  if (reg != null)//清除购物车
  {
    List<ShoppingCart> shoppingCarts =                                ShoppingCarInfoManager.GetShoppingCartsByRegisterId(reg.RegisterId);
    foreach (var r in shoppingCarts)
    {
      ShoppingCarInfoManager.DeletedShoppingCartBySkuIdAndRegisertId(r.SkuId, reg.RegisterId);
    }
  }
  else //清除cookie
  {
    if (cookie != null)
    {
      cookie.Expires = DateTime.Now.AddDays(-1);
      cookiState = 0;
      Response.Cookies.Add(cookie);
    }
  }
}
#endregion

ASP.NET购物车Cookie获取,创建,添加,更新,删除的用法的更多相关文章

  1. PHP中Cookie的使用---添加/更新/删除/获取Cookie 及 自动填写该用户的用户名和密码和判断是否第一次登陆

    PHP中Cookie的使用---添加/更新/删除/获取Cookie 及 自动填写该用户的用户名和密码和判断是否第一次登陆  什么是cookie 服务器在客户端保存用户的信息,比如登录名,密码等 这些数 ...

  2. 从零开始学 Web 之 jQuery(四)元素的创建添加与删除,自定义属性

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  3. Jquery和js实现cookie操作手机浮层广告;附加:js获取、添加、删除cookie

    1.jquery cookie包实现手机上的浮层广告 <span style="font-size:18px;">$(document).ready(function( ...

  4. (转载)html dom节点操作(获取/修改/添加或删除)

    DOM 是关于如何获取.修改.添加或删除 HTML 元素的标准,下面为大家介绍下html dom节点操作,感兴趣的朋友可以参考下   HTML DOM 是关于如何获取.修改.添加或删除 HTML 元素 ...

  5. Dom4j 添加 / 更新 / 删除 XML

    1.获得文档 /** *1.获得解析流 *2.解析XML */ 2.添加 /** *1.获取父元素 *2.创建元素 *3.创建属性并添加到元素中 *4.元素添加到根节点 */ 3.更新 /** *1. ...

  6. DOM 添加 / 更新 / 删除 XML (CURD)

    获得Document /**     * 获取文档     * 1.获得实例工厂     * 2.获得解析器     * 3.获得document     */ 添加结点 /**     * 1.获得 ...

  7. ado.net 批量添加 更新 删除

    自曾列就别往下看 别折腾了   使用 SqlBulkCopy ,dataTable 必须跟sql里面的表字段完全一样 下面在sqlserver中演示 mysql 请google MySqlBulkLo ...

  8. Mysql添加更新删除数据-表

    例如 此处拥有一个表名为 uuser 为表添加新数据 ,'); ,'); ,'); 假如只想添加uid和uname ,'小张'); 那么pas自动填充为NULL. 为表更新数据 这里把小王的pas改成 ...

  9. 原生js封装cookie获取、设置及删除

    使用cookie(key,value,options) 参数key,value,options(可选) function cookie(key,value,options){ if(typeof va ...

随机推荐

  1. [BZOJ4947] 字符串大师 - KMP

    4974: [Lydsy1708月赛]字符串大师 Time Limit: 1 Sec  Memory Limit: 256 MBSubmit: 739  Solved: 358[Submit][Sta ...

  2. JS实现生成一个周对应日期数组

    /* 获取日期和周 */ getDateWeek() {/* 得到当前日期的时间戳 */ const timestamp = Date.now() // const timestamp = new D ...

  3. 玩转OneNET物联网平台之HTTP服务③ —— OneNet智能灯 HTTP版本

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  4. QlikSense主题开发

    // 主题是qliksense 2018年2月版提出,4月版正式实施,其实就是去修改sense默认的.json文件和.css文件 { // 定义自定义主题是否从默认主题(Sense Classic)继 ...

  5. 大觅网05Day

    1.Mycat概述 在此前的服务器对数据库的存储数量要求并不高的时候,被经常使用的MySql数据基本能够满足对数据存储的要求. 但随着技术的不断发展,MySql甚至Redis都无法满足现今存储数量的指 ...

  6. 身份证号码验证算法(php和js实现)

    原文:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=21126994&id=3938244 http://www.jb ...

  7. 原生js实现上拉加载

    原生js实现上拉加载其实超级简单,把原理整明白了你也会,再也不用去引一个mescroll啦~ 好了,废话不多说,开始进入正题:上拉加载是怎么去做的,原理就是监听滚动条滑到页面底部,然后就去做一次请求数 ...

  8. windows服务参考

    dll文件 aaclient.dll 何时何地都可以访问客户端 accessibilitycpl.dll 轻松访问控制面板 acledit.dll 访问控制列表编辑器 aclui.dll 安全描述符编 ...

  9. 洛谷P2858 【[USACO06FEB]奶牛零食Treats for the Cows】

    我们可以记录头和尾再加一个卖了的零食数目,如果头超过尾就return 0. 如果遇到需要重复使用的数,(也就是不为零的d数组)就直接return d[tuo][wei]. 如果没有,就取卖头一个与最后 ...

  10. Map Reduce 论文阅读

    Map Reduce 是 Google 在 2004 年发表的一篇论文,原文链接 在这 后来 Hadoop 直接内置了这一框架. 读完之后记录一下心得. 主要背景:MapReduce 的出现很具有工程 ...