/// <summary>
/// 添加Cookie
/// </summary>
/// <param name="gc">GoodsToCookie</param>
public static int AddCookies(GoodsCookie gs)
{
string userID = null;
if (HttpContext.Current.Session["hasLogin"] != null)
{
userID = HttpContext.Current.Session["hasLogin"].ToString();//登录
}
ShoppingMallContext db = new ShoppingMallContext();
var cookies = HttpContext.Current.Request.Cookies["MyShoppingCart"]; //创建Cookie并命名
if (cookies == null)
{
string strCookie = gs.skuID + "-" + gs.count + ",";
cookies = new HttpCookie("MyShoppingCart") //对象初始化
{
Expires = DateTime.Today.AddDays(),//过期时间
Value = strCookie//Cookie赋值
}; HttpContext.Current.Response.Cookies.Add(cookies);//添加进Cookie if (userID != null)//如果用户登录了
{
SkuShoppingCart sc = new SkuShoppingCart();//初始化购物车类
sc.GoodsSkuID = gs.skuID;//完成之后给类的属性赋值
sc.ShoppingCartID = db.ShoppingCarts//根据用户ID来找相对应的购物车ID
.Where(f => f.UserID == userID)
.Select(f => f.ShoppingCartID)
.Single();
sc.SkuCount = gs.Count;//统计数量
db.SkuShoppingCarts.Add(sc);//添加进数据库
}
return ;
}
else
{ if (String.IsNullOrWhiteSpace(cookies.Value))//判断Cookies里值为不为空
{
string strCookie = gs.skuID + "-" + gs.count + ",";
cookies = new HttpCookie("MyShoppingCart") //对象初始化
{
Expires = DateTime.Today.AddDays(),
Value = strCookie
};
HttpContext.Current.Response.Cookies.Add(cookies);//添加进Cookie
if(userID != null)
{
SkuShoppingCart sc = new SkuShoppingCart();
sc.GoodsSkuID = gs.skuID;//完成之后给类的属性赋值
sc.ShoppingCartID = db.ShoppingCarts//根据用户ID来找相对应的购物车ID
.Where(f => f.UserID == userID)
.Select(f => f.ShoppingCartID)
.Single();
sc.SkuCount = gs.Count;//统计数量
db.SkuShoppingCarts.Add(sc);//添加进数据库
}
return ;
}
else//返之
{
#region -----添加到字典----- Dictionary<int, int> dict = new Dictionary<int, int>();//初始化字典
string goods = cookies.Value;//声明一个string变量并赋值 为 Cookie
goods = goods.Substring(, goods.Length - );//指定字符串长度
string[] skuidArray = goods.Split(',');//拆解字符串并赋值给skuidArray数组
int count = ;//声明一个Int变量
foreach (var i in skuidArray)//迭代数组
{
if(i =="" || i == null)//如果没有值
{
continue;//继续
}
else//如果有
{
string[] strCont = i.Split('-');//拆解字符串
int key = int.Parse(strCont[]);//第一个
int value = int.Parse(strCont[]);//第二个
//判断字典里有没有这个key
if (dict.ContainsKey(key))
{
dict[key] += value;//如果有就叠加
}
else//没有
{
dict.Add(key, value);//添加进字典
}
} }
#endregion #region ------- 字典判断 ------- if (dict.ContainsKey(gs.skuID))//如果字典里有这个ID
{
dict[gs.skuID] += gs.count;
count += skuidArray.Count();//就让他们的数量相加
}
else
{
dict.Add(gs.skuID, gs.count);
count = skuidArray.Count() + ;//如果没有,就往字典(dict)添加一个新的
} string countStr = "";
foreach (var v in dict)//再迭代字典拼字符串
{
countStr += v.Key + "-" + v.Value + ",";//键值对
}
cookies = new HttpCookie(countStr)
{
Expires = DateTime.Today.AddDays(),
Value = countStr
};//拼好了添加到Cookie HttpContext.Current.Request.Cookies.Add(cookies);
if (userID != null)//如果用户登录了
{
SkuShoppingCart sc = new SkuShoppingCart();//初始化购物车类
sc.GoodsSkuID = gs.skuID;//完成之后给类的属性赋值
sc.ShoppingCartID = db.ShoppingCarts//根据用户ID来找相对应的购物车ID
.Where(f => f.UserID == userID)
.Select(f => f.ShoppingCartID)
.Single();
sc.SkuCount = gs.Count;//统计数量
db.SkuShoppingCarts.Add(sc);//添加进数据库
}
return count;//数量 #endregion }
}
}

Mvc4.0添加商品到Cookie的更多相关文章

  1. mvc4.0添加EF4.0时发生编译时错误

    解决此问题是因为MVC4.0默认未添加EF4.0的引用,EF4.0引用的是System.Data.Entity.dll, Version=4.0.0.0, 解决办法: 在web.config文件sys ...

  2. Asp.Net MVC4.0 官方教程 入门指南之四--添加一个模型

    Asp.Net MVC4.0 官方教程 入门指南之四--添加一个模型 在这一节中,你将添加用于管理数据库中电影的类.这些类是ASP.NET MVC应用程序的模型部分. 你将使用.NET Framewo ...

  3. Asp.Net MVC4.0 官方教程 入门指南之三--添加一个视图

    Asp.Net MVC4.0 官方教程 入门指南之三--添加一个视图 在本节中,您需要修改HelloWorldController类,从而使用视图模板文件,干净优雅的封装生成返回到客户端浏览器HTML ...

  4. Asp.Net MVC4.0 官方教程 入门指南之二--添加一个控制器

    Asp.Net MVC4.0 官方教程 入门指南之二--添加一个控制器 MVC概念 MVC的含义是 “模型-视图-控制器”.MVC是一个架构良好并且易于测试和易于维护的开发模式.基于MVC模式的应用程 ...

  5. Spring.Net在Mvc4.0中应用的说明

    案例Demo:http://yunpan.cn/cJ5aZrm7Uybi3 访问密码 414b Spring.Net在Mvc4.0中应用的说明 1.引用dll 2.修改Global文件 (Spring ...

  6. iis7.0上发布mvc4.0网站

    步骤如下: 1.右击需要发布的项目,在弹出的菜单中选择“发布...”选项 2.在“发布web”对话框中进行设置,配置文件名称默认为“配置文件1”可以修改为需要的名字,以便识别,也可以不改.发布方法选择 ...

  7. 一. DotNet MVC4.0+EasyUI Web简单框架-前言

    之所以说它简单,是因为仅仅用了大家最熟悉的三层架构,简单明了 1.先新建一个MVC4.0 Web项目 2.添加EasyUI的引用,放到Script底下 http://files.cnblogs.com ...

  8. 利用CSS预处理技术实现项目换肤功能(less css + asp.net mvc4.0 bundle)

    一.背景 在越来越重视用户体验的今天,换肤功能也慢慢被重视起来.一个web系统用户可以选择一个自己喜欢的系统主题,在用户眼里还是会多少加点分的.我们很开心的是easyui v1.3.4有自带defau ...

  9. MVC4.0网站发布和部署到IIS7.0上的方法

    最近在研究MVC4,使用vs2010,开发的站点在发布和部署到iis7上的过程中遇到了很多问题,现在将解决的过程记录下来,以便日后参考,整个过程主要以截图形式呈现 vs2010的安装和mvc4的安装不 ...

随机推荐

  1. cocos2d-x 3.0游戏实例学习笔记 《跑酷》 完结篇--源代码放送

    说明:这里是借鉴:晓风残月前辈的博客,他是将泰然网的跑酷教程,用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...

  2. 一个非常给力的播放器video-js

    video-js采用的是html5播放器. 在不支持html5的浏览器会自动切换成flash. video-js的官网http://www.videojs.com/ 看看下载的demo就知道个大概了. ...

  3. 数据结构算法应用C++语言描述——(1)C++基础知识

    一.二维数组 (1)二维数组的列是固定时,行未知时使用动态分配 当一个二维数组每一维的大小在编译时都是已知时,可以采用类似于创建一维数组的语法 来创建二维数组.例如,一个类型为char的7×5数组可用 ...

  4. 2014年2月5日 Oracle ORACLE的工作机制[转]

      网上看到一篇描写ORACLE工作机制的文章,觉得很不错!特摘录了下来.   ORACLE的工作机制-1 (by xyf_tck) 我们从一个用户请求开始讲,ORACLE的简要的工作机制是怎样的,首 ...

  5. SQL in Qt (一)

    Connecting to Databases To access a database with QSqlQuery or QSqlQueryModel, create and open one o ...

  6. 从汇编看c++中指向成员变量的指针(一)

    在c++中,指向类成员变量的指针存储的并不是该成员变量所在内存的地址,而仅仅是该成员变量在该类对象中相对于对象首地址的偏移量.因此,它必须绑定到某一个对象或者对象指针上面,这里的对象和对象指针,就相当 ...

  7. 从汇编看c++对静态成员的存取

    c++中静态成员变量不存在于对象之中,而存在于全局数据段,只是其可见性受到限制,仅能被所属类访问,而非静态成员变量存在于对象中,因而,在访问两种不同数据成员时,会有些许差别.对于静态数据成员的访问,是 ...

  8. Java代理模式——静态代理模式

    一:代理模式 代理模式的作用是:为其他对象提供一种代理以控制这个对象的访问.在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 二:代理模式设计 ...

  9. tab标签切换(无炫效果,简单的显示隐藏)

    从最简单的效果开始写起,一个简单的JQ写出tab切换效果,很静态,没有任何的轮转特效,单纯的点击标签显示区域块. 附上代码: HTML: <div class="wrapper&quo ...

  10. S​Q​L​ ​S​e​r​v​e​r​中​​的​P​W​D​E​N​C​R​Y​P​T​与​P​W​D​C​O​M​P​A​R​E​函​数

    前幾天有個客戶的網站出問題(不是我們開發的),請我們幫他看,主要的問題是他們的網站會員在進行查詢密碼時,會員收到信的時候在密碼的欄位竟然會出現 System.Binary[] 字樣.而我進去資料庫中查 ...