/// <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. 求高精度幂(java)

    求高精度幂 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 对数值很大.精度很高的数进行高精度计算是一类十分常见的问题.比如,对国债进行计算就是属于这类问题. 现在要 ...

  2. RMAN传输表空间迁移数据

    实验环境: 源数据库:oracle 10g(Release 10.2.0.1.0) 目标数据库:oracle 10g(Release 10.2.0.1.0) 待传输的表空间:TEST 1.在tes ...

  3. Test 2.14

    i am back 写博客是个好习惯啊,要坚持下去才行 这些天的日子实在堕落

  4. 使用FindControl("id")查找控件 返回值都是Null的问题

    做了一个通过字符串ID查找页面控件并且给页面控件赋值的功能,过程中遇到了this.FindControl("id")返回值都是Null的问题,记录一下解决办法. 问题的原因是我所要 ...

  5. JavaScript 原型链的一点想法

    JavaScript借鉴了许多语言的特点:例如语法类Java.函数借鉴Scheme.原型继承借鉴自Self.正则表达式借鉴于Perl.(DC Javascript:语言精粹).      首先,每个J ...

  6. 用记事本编写C#程序并运行C#代码

    net framework自带有C#编译器 csc.exe,用它就好了 它在.NET框架目录下的<\Microsoft.NET\Framework\v**** (*号内容与版本有关) 不行你直接 ...

  7. Java三大特征之封装(一)

    封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保 ...

  8. ajax全局函数运用

  9. php 数组 (3) reset() end() count() current() key()

    <?php /* count()统计数组中元素的个数 reset() 把数组内部指针移动到数组第一个元素,并返回元素值 end() 把数组内部指针移动到数组最后一个元素,并返回元素值 prev( ...

  10. tp其他功能

    数据缓存 在ThinkPHP中进行缓存操作,一般情况下并不需要直接操作缓存类,因为系统内置对缓存操作进行了封装,3.1版本推荐的数据缓存方法是cache方法,基本的用法是:(3.1.2版本cache方 ...