Mvc4.0添加商品到Cookie
/// <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的更多相关文章
- mvc4.0添加EF4.0时发生编译时错误
解决此问题是因为MVC4.0默认未添加EF4.0的引用,EF4.0引用的是System.Data.Entity.dll, Version=4.0.0.0, 解决办法: 在web.config文件sys ...
- Asp.Net MVC4.0 官方教程 入门指南之四--添加一个模型
Asp.Net MVC4.0 官方教程 入门指南之四--添加一个模型 在这一节中,你将添加用于管理数据库中电影的类.这些类是ASP.NET MVC应用程序的模型部分. 你将使用.NET Framewo ...
- Asp.Net MVC4.0 官方教程 入门指南之三--添加一个视图
Asp.Net MVC4.0 官方教程 入门指南之三--添加一个视图 在本节中,您需要修改HelloWorldController类,从而使用视图模板文件,干净优雅的封装生成返回到客户端浏览器HTML ...
- Asp.Net MVC4.0 官方教程 入门指南之二--添加一个控制器
Asp.Net MVC4.0 官方教程 入门指南之二--添加一个控制器 MVC概念 MVC的含义是 “模型-视图-控制器”.MVC是一个架构良好并且易于测试和易于维护的开发模式.基于MVC模式的应用程 ...
- Spring.Net在Mvc4.0中应用的说明
案例Demo:http://yunpan.cn/cJ5aZrm7Uybi3 访问密码 414b Spring.Net在Mvc4.0中应用的说明 1.引用dll 2.修改Global文件 (Spring ...
- iis7.0上发布mvc4.0网站
步骤如下: 1.右击需要发布的项目,在弹出的菜单中选择“发布...”选项 2.在“发布web”对话框中进行设置,配置文件名称默认为“配置文件1”可以修改为需要的名字,以便识别,也可以不改.发布方法选择 ...
- 一. DotNet MVC4.0+EasyUI Web简单框架-前言
之所以说它简单,是因为仅仅用了大家最熟悉的三层架构,简单明了 1.先新建一个MVC4.0 Web项目 2.添加EasyUI的引用,放到Script底下 http://files.cnblogs.com ...
- 利用CSS预处理技术实现项目换肤功能(less css + asp.net mvc4.0 bundle)
一.背景 在越来越重视用户体验的今天,换肤功能也慢慢被重视起来.一个web系统用户可以选择一个自己喜欢的系统主题,在用户眼里还是会多少加点分的.我们很开心的是easyui v1.3.4有自带defau ...
- MVC4.0网站发布和部署到IIS7.0上的方法
最近在研究MVC4,使用vs2010,开发的站点在发布和部署到iis7上的过程中遇到了很多问题,现在将解决的过程记录下来,以便日后参考,整个过程主要以截图形式呈现 vs2010的安装和mvc4的安装不 ...
随机推荐
- 格而知之3:Core Data的基本使用
最近准备做一个随手笔记类的app给自己用,考虑到从未使用过Core Data,就决定用Core Data来做数据存储.在网上参考了一些Core Data的资料后,用一天的时间写了这个demo,主要测试 ...
- HDU 4614 Vases and Flowers (2013多校第二场线段树)
题意摘自:http://blog.csdn.net/kdqzzxxcc/article/details/9474169 ORZZ 题意:给你N个花瓶,编号是0 到 N - 1 ,初始状态花瓶是空的,每 ...
- uva 10911 - Forming Quiz Teams(记忆化搜索)
题目链接:10911 - Forming Quiz Teams 题目大意:给出2 * n个选手的坐标, 要求将所有的选手分成n组, 每组两个人, 所有组的两个人之间的距离之和要最小, 输出最小值. 解 ...
- 3第一周课后练习·阅读计划(3)-使用函数来访问私有数据成员
/* * Copyright (c) 2015, 计算机科学学院,烟台大学 * All rights reserved. * 文件名:test.cpp * 作 靠:刘畅 * 完成日期:2015年 3 ...
- angular controller之间通信方式
对于日常开发中,难免会有controller之间通信需求.对于controller之间通信有两种方式可以做到. 用 Angular 进行开发,基本上都会遇到 Controller 之间通信的问题,本文 ...
- (原)前端知识杂烩(css系列)
更新于 20160217 1. css hack .pad{ padding:17px 0 0 17px; /* 普通写法 */ *padding:17px 0 0 17px; /* *为IE7 *+ ...
- Swift语法基础入门三(函数, 闭包)
Swift语法基础入门三(函数, 闭包) 函数: 函数是用来完成特定任务的独立的代码块.你给一个函数起一个合适的名字,用来标识函数做什么,并且当函数需要执行的时候,这个名字会被用于“调用”函数 格式: ...
- override和new的区别
override 1. override是派生类用来重写基类中方法的: 2. override不能重写非虚方法和静态方法: 3. override只能重写用virtual.abstract.overr ...
- HDU 5794 - A Simple Chess
HDU 5794 - A Simple Chess题意: 马(象棋)初始位置在(1,1), 现在要走到(n,m), 问有几种走法 棋盘上有r个障碍物, 该位置不能走, 并规定只能走右下方 数据范围: ...
- java poi 导出excel
poi的jar下载地址:http://poi.apache.org/ 下载后会有很多jar,但是如果只是简单的excel报表的话,导入一个poi-版本号-日期.jar就可以了. 导出代码: priva ...