/// <summary>
/// 删除Cookie
/// </summary>
/// <param name="skuID">从购物车选择要删除的商品ID</param>
/// <returns>先从Cookie里提取出所有的商品并放进一个字典 Dictionary<int, int> dit = new Dictionary<int, int>();里</returns>
/// 从字典里删除传过来的商品,再重新拼接字符串放到Cookie里,
/// 并把从Cookie拼接好的字符串返回到一个声明的集合(List<ShoppingGoods>)里
public static List<ShoppingGoods> DeletCookie(int skuID)
{ if (skuID != )
{
//先从Cookie里提取出所有的商品并放进一个字典(Dictionary<int, int>)里
HttpCookie cookie = HttpContext.Current.Request.Cookies["MyShoppingCart"];//声明Cookie容器
if (cookie != null)//如果Cookie里面有值
{
Dictionary<int, int> dit = new Dictionary<int, int>();//声明字典
string goodsID = cookie.Value;//解析Cookie值并赋值给变量GoodsID
goodsID = goodsID.Substring(, goodsID.Length - );//检索GoodsID字符串的长度
string[] gdsArray = goodsID.Split(',');//检索GoodsID字符串的长度后拆解
int Count = ;//声明Int数量
foreach (var v in gdsArray)//迭代拆解出来的字符串数组
{
if (v == "" || v == null)//判断字符串Value == null || == “”
{
continue;
}
else//如果不为Null或“”
{
string[] strValue = v.Split('-');//拆解字符串
string key = strValue[];//给拆解后的字符串strValue[0]赋值给 string 变量 Key
int strKey = ;//声明int变量
bool parseOKstrKey = int.TryParse(key, out strKey);//转换 string 变量 key字符串为 Int key string value = strValue[];//给字符串的strValue[1]赋值给 string 变量 value
int strCount = ;//声明int变量
bool parseOKstrCount = int.TryParse(value, out strCount);//转换string value字符串为 Int value if (dit.ContainsKey(strKey))//判断字典
{
dit[strKey] += strCount;
Count = gdsArray.Count();//数量统计
}
else
{
dit.Add(strKey, strCount);
Count = gdsArray.Count() + ;
}
}
}
#region 从字典里删除传过来的商品,再重新拼接字符串放到Cookie里
if (dit.ContainsKey(skuID))
{
dit.Remove(skuID);//删除商品
string strCookie = null;//声明拼接剩下的字符串名
ShoppingMallContext db = new ShoppingMallContext();//数据上下文
List<ShoppingGoods> lsg = new List<ShoppingGoods>();//New一个 ShoppingGoods 的集合
foreach (var vdit in dit)//迭代字典里剩余的字符串
{
strCookie += vdit.Key + "-" + vdit.Value + ",";//给字符串strCookie赋值 ShoppingGoods sg = new ShoppingGoods();//New类
sg.GoodsName = db.GoodsSKUs// 很据传过来的vdit.Key查商品名(GoodsName)
.Where(f => f.GoodsID == skuID)
.Select(f => f.Goods.GoodsName)
.ToString();
sg.Goodssku = db.GoodsSKUs //根据传过来的vdit.Key查Goodssku
.Where(f => f.GoodsID == skuID)
.Single();
sg.Count = strCookie[];//根据传过来的vdit.Value给ShoppingGoods 属性Count 赋值 lsg.Add(sg);
}
//并把从Cookie拼接好的字符串返回到一个声明的List<ShoppingGoods>里
var cookies = new HttpCookie(strCookie);
cookies.Expires = DateTime.Today.AddDays();//设置Cookie的过期时间
cookies.Value = strCookie;//Cookie的值
HttpContext.Current.Request.Cookies.Add(cookies);//添加到Cookie
return lsg;
}
else
{
return null;
}
#endregion//从字典里删除传过来的商品,再重新拼接字符串放到Cookie里
}
else
{
return null;
} }
else
{
return TiQuCookies();
}
}
这些代码都是刚开始的时候自己写着练习,今天上班把事情处理完了闲着肾痛就把这些代码重新整理了一下。以后要多多谢谢博客,提高自己的语言编写能力才是

Mvc里删除Cooki的更多相关文章

  1. 记住 MVC里用formcollection接收form表单传来的值,表单属性必须有name为健!

    记住 MVC里用formcollection接收form表单传来的值,input属性必须有name为健! 调了一晚上!! 写个日志记下!!

  2. tableView里删除单元格

    tableView里删除单元格 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSInde ...

  3. Spring.Net在ASP.NET Mvc里使用的一个小例子

    就贴个小例子,就不注意格式了. 1.下载dll NuGet的下载地址:http://docs.nuget.org/docs/start-here/installing-nuget 在vs的NuGet里 ...

  4. JAVA 从一个List里删除包含另一个List的数据

    /** * 从listA里删除listB里有的数据 * @param listA * @param listB * @return */ public static List<String> ...

  5. mvc 修改 删除 linq

    Models文件夹里面可以Linq,Entity两种映射框架,也允许有ADO的操作,甚至可以ADO代码和映射代码一起操作 控制器当中允许有相同的方法名,类似在做修改时有两个Modify方法,但是MVC ...

  6. 在ASP.NET MVC里对Web Page网页进行权限控制

    我们在ASP.NET MVC开发时,有时候还是得设计ASP.NET的Web Page网页(.aspx和.aspx.cs),来实现一些ASP.NET MVC无法实现的功能,如此篇<Visual S ...

  7. MVC实现删除数据库记录

    本次MVC练习,我们想实现对数据库的记录进行删除.在网页的记录列表上,点击删除,将带到另外一个详细页面,显示详细的信息,让用户对删除的信息进行确认,再点击删除动作.不管怎样,得先在数据库创建一个删除的 ...

  8. MVC入门——删除页

    添加Action DeleteUserInfo using System; using System.Collections.Generic; using System.Linq; using Sys ...

  9. MVC里模型常用的一些操作

    学习也是做买卖,归根到底还是学习成本的问题. 下面把微软集合类型的增删改查稍微罗列一下,大家看看它能带来的便利,和你要学的新东西,还有风险(纯粹的数据操作,不用框架,风险其实不大)相比,是否值得.来决 ...

随机推荐

  1. hdu 1279 验证角谷猜想(简单的模拟)

    Problem Description 数论中有许多猜想尚未解决,其中有一个被称为“角谷猜想”的问题,该问题在五.六十年代的美国多个著名高校中曾风行一时,这个问题是这样描述的:任何一个大于一的自然数, ...

  2. zoj 3229 有源汇有上下界的最大流模板题

    /*坑啊,pe的程序在zoj上原来是wa. 题目大意:一个屌丝给m个女神拍照.计划拍照n天,每一天屌丝最多个C个女神拍照,每天拍照数不能超过D张,并且给每一个女神i拍照有数量限制[Li,Ri], 对于 ...

  3. 使用Oracle安装账户登录数据库

    如果Linux或Unix平台,安装了Oracle,而且有root账号,则使用“su Oracle安装账户”的方式,sqlplus登录到数据库,这种方式是最可靠的.正如@dbsnake所说,”主要是Or ...

  4. Material Design之FloatingActionButton的使用

    FloatingActionButton是继承至ImageView,所以FloatingActionButton拥有ImageView的全部属性. CoordinatorLayout能够用来配合Flo ...

  5. OS Kernel Parameter.semopm

    安装Oracle11g内核参数semopm未校验通过,点击Fix&Check Again后,会提示执行修改脚本,在/tmp/CVU_11.2.0.1.0_oracle下,找到并执行该脚本run ...

  6. C# for 循环 迭代法 穷举法

    for()循环. 四要素: 初始条件,循环条件,状态改变,循环体. 执行过程: 初始条件--循环条件--循环体--状态改变--循环条件.... 注意:for的小括号里面分号隔开,for的小括号后不要加 ...

  7. C++<algorithm>中sort的比较函数写法(转)

    转自:http://www.wl566.com/biancheng/98907.html C++<algorithm>中sort的比较函数写法,有需要的朋友可以参考下. 定义排序函数: 方 ...

  8. mysql中select distinct的用法

    在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但 往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的 ...

  9. Android 关于操作UI线程

    在非UI线程里访问 Android UI toolkit—这个在一个worker线程修改了 View .这会导致不可预期的结果,而且还难以调试. 为了修复这个问题,Android提供了几个方法从非UI ...

  10. PCL学习笔记(一)

    由于项目需要,开始学习一下HP公司的PCL打印语言,发现这方面的中文资料非常少,我做下记录也为后人提供便利. 关于PCL的介绍可以参考wiki百科 http://zh.wikipedia.org/zh ...