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 ...
随机推荐
- Cocos2d-x 学习笔记(15.2) EventDispatcher 事件分发机制 dispatchEvent(event)
1. 事件分发方法 EventDispatcher::dispatchEvent(Event* event) 首先通过_isEnabled标志判断事件分发是否启用. 执行 updateDirtyFla ...
- SpringBoot系列:Spring Boot集成Spring Cache,使用EhCache
前面的章节,讲解了Spring Boot集成Spring Cache,Spring Cache已经完成了多种Cache的实现,包括EhCache.RedisCache.ConcurrentMapCac ...
- windows 系统对应的内核版本和自带 iis 版本
Windows 10 10.0* Windows Server 2016 10.0* Windows 8.1 6.3* Windows Server 2012 R2 6.3* Windows 8 6. ...
- git jenkins 介绍
1.什么是持续集成?2.什么是持续交付?3.什么是持续部署?4.版本控制工具? git 1.git基本操作 2.git 分支 3.git 标签tag 4.gitlab git ...
- Ubuntu18.04 安装PGSQL
关系数据库管理系统是许多网站和应用程序的关键组成部分.它们提供了一种结构化的方式来存储,组织和访问信息. PostgreSQL或Postgres是一个关系数据库管理系统,提供SQL查询语言的实现.它是 ...
- The usage of Markdown---引用
目录 1. 序言 2. 引用与嵌套引用 3. 列表中的引用 更新时间:209.09.14 1. 序言 在本篇,我们来仔细谈一下Markdown的引用. 2. 引用与嵌套引用 在Markdown ...
- django-Views之使用视图渲染模板(五)
render(<request>,<template_name>,context=-None,content_type=None,status=None,using=None) ...
- iOS开发 swift 3dTouch实现 附代码
iOS开发 swift 3dTouch实现 附代码 一.What? 从iphone6s开始,苹果手机加入了3d touch技术,最简单的理解就是可以读取用户的点击屏幕力度大小,根据力度大小给予不同的反 ...
- 【MySQL】MySQL服务启动失解决方法
写在前面的话:前段时间,为了更加流畅愉快的玩PUBG,我在任务管理器中,关闭了mysqld服务.后来我在使用MySQL数据库服务的时候,发现去到MySQL安装目录下双击运行mysqld.exe(数据库 ...
- Java HashSet对txt文本内容去重(统计小说用过的字或字数)
Java HashSet对txt文本内容去重(统计小说用过的字或字数) 基本思路: 1.字节流读需要去重的txt文本.(展示demo为当前workspace下名为utf-8.txt的文本) 2.对读取 ...