ASP.NET购物车Cookie获取,创建,添加,更新,删除的用法
#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获取,创建,添加,更新,删除的用法的更多相关文章
- PHP中Cookie的使用---添加/更新/删除/获取Cookie 及 自动填写该用户的用户名和密码和判断是否第一次登陆
PHP中Cookie的使用---添加/更新/删除/获取Cookie 及 自动填写该用户的用户名和密码和判断是否第一次登陆 什么是cookie 服务器在客户端保存用户的信息,比如登录名,密码等 这些数 ...
- 从零开始学 Web 之 jQuery(四)元素的创建添加与删除,自定义属性
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- Jquery和js实现cookie操作手机浮层广告;附加:js获取、添加、删除cookie
1.jquery cookie包实现手机上的浮层广告 <span style="font-size:18px;">$(document).ready(function( ...
- (转载)html dom节点操作(获取/修改/添加或删除)
DOM 是关于如何获取.修改.添加或删除 HTML 元素的标准,下面为大家介绍下html dom节点操作,感兴趣的朋友可以参考下 HTML DOM 是关于如何获取.修改.添加或删除 HTML 元素 ...
- Dom4j 添加 / 更新 / 删除 XML
1.获得文档 /** *1.获得解析流 *2.解析XML */ 2.添加 /** *1.获取父元素 *2.创建元素 *3.创建属性并添加到元素中 *4.元素添加到根节点 */ 3.更新 /** *1. ...
- DOM 添加 / 更新 / 删除 XML (CURD)
获得Document /** * 获取文档 * 1.获得实例工厂 * 2.获得解析器 * 3.获得document */ 添加结点 /** * 1.获得 ...
- ado.net 批量添加 更新 删除
自曾列就别往下看 别折腾了 使用 SqlBulkCopy ,dataTable 必须跟sql里面的表字段完全一样 下面在sqlserver中演示 mysql 请google MySqlBulkLo ...
- Mysql添加更新删除数据-表
例如 此处拥有一个表名为 uuser 为表添加新数据 ,'); ,'); ,'); 假如只想添加uid和uname ,'小张'); 那么pas自动填充为NULL. 为表更新数据 这里把小王的pas改成 ...
- 原生js封装cookie获取、设置及删除
使用cookie(key,value,options) 参数key,value,options(可选) function cookie(key,value,options){ if(typeof va ...
随机推荐
- JavaScript中Array(数组) 对象
JavaScript中Array 对象 JavaScript中创建数组有两种方式 (一)使用直接量表示法: var arr4 = []; //创建一个空数组var arr5 = [20]; // 创建 ...
- [Luogu3069][USACO13JAN]牛的阵容Cow Lineup
题目描述 Farmer John's N cows (1 <= N <= 100,000) are lined up in a row. Each cow is identified by ...
- lodash 学习笔记
一.介绍 官方文档: 中文 - https://www.lodashjs.com/docs/latest 英文- https://lodash.com/docs/4.17.15 1.作用 lodash ...
- Java自动化测试框架-04 - TestNG之Test Method篇 - 道法自然,法力无边(详细教程)
简介 按照上一篇的计划,这一篇给小伙伴们分享一下测试方法. 一.设置参数 测试方法是可以带有参数的.每个测试方法都可以带有任意数量的参数,并且可以通过使用TestNG的@Parameters向方法传递 ...
- postman设置环境变量与全局变量
1.环境变量可以设置多组 设置环境变量 编辑环境变量 2.全局变量只能设置一组 可以在Pre-request Script和Tests中设置全局变量 如:pm.globals.set("na ...
- Uipath 浏览器页面最大化和最小化
文章来源东京IT青年前线http://www.rpatokyo.com/ Uipath 浏览器页面最大化和最小化 浏览器在关闭时会自动记忆上次浏览器关闭时窗口的小,下次再次会以同样的大小打开.机器 ...
- Class constructor FileManager cannot be invoked without 'new'
bug:今天项目重新安装依赖打包的时候出现错误:Class constructor FileManager cannot be invoked without 'new' 解决:尝试了很多种解决方案, ...
- .net core跨平台应用研究-ubuntu core下配置.net core运行时
引言 年初研究了一阵子.net core跨平台应用,先后发表了几篇应用研究的文章.因工作原因,忙于项目上线,有一阵子没来博客园写文章了.最近项目基本收尾,抽空翻了下自己的博客,廖廖几篇文章,真让人汗颜 ...
- 部署acfs笔记
acfs问题分析 环境描述 某电力项目创建了两个磁盘组,分别是OGGEXT和OGGREP,利用这两个磁盘组划分了两个acfs文件系统,之后,cloud监控就一直在报磁盘空间不足,但是这两个文件系统的使 ...
- ThreadLocal小试牛刀
ThreadLocal中保存的数据只能被当前线程私有,不被其它线程可见 证明 声明一个全局的变量threadLocal,初始值为1,通过3个线程对其进行访问修改设置,理论上threadLocal的最终 ...