/// <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. activity之栈管理

    在android中.一个activity组件能够激活还有一个activity组件:本程序activity和其他程序的activity.     若新的被激活的activity组件属于还有一个应用程序, ...

  2. winform —— listview创建表及简单的增删改查

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  3. 关于ASP.NET 中站点地图sitemap 的使用

    在ASP.NET  MVC 如此火热的时期,我竟然不适时宜的谈起ASP.NET ,恐怕会引来一阵嘲笑.最为无趣的是,讲解的竟然还是其中的一个控件.oh~~  my god!my out! ^_^ Si ...

  4. Winform单例模式与传值

    单例模式(singleton)的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 在多窗体界面中,如果要加入一个“关于”的窗体,用于显 ...

  5. [转载]MATLAB中FFT的使用方法

    http://blog.163.com/fei_lai_feng/blog/static/9289962200971751114547/ 说明:以下资源来源于<数字信号处理的MATLAB实现&g ...

  6. SQL使用记录

    Q:怎么删掉sql server登录时的用户名?(仅仅是删掉那个登录时的提示) A:先关闭数据库登录引擎,然后删除:%AppData%\Microsoft\Microsoft SQL Server\1 ...

  7. commands - `for`

    internal variable of separator: IFS

  8. C# sliverlight调用WCF服务出现的一个错误

    错误提示如下: 尝试向 URI“http://localhost:8396/Service1.svc”发出请求时出错.这可能是由于试图以跨域方式访问服务而又没有正确的跨域策略,或策略不适用于 SOAP ...

  9. avalon前端js直接通过ajax请求传一个对象到后台

    代码如下:                //企业开票信息      vm.invoiceInfo = {       companyId : "",            //企 ...

  10. tcl/tk demo

    环境及版本说明: OSX10.9 tclsh -> tclsh8.5 wish -> wish8.5 查看本机运行环境: which wish; 2 /usr/bin/wish which ...