/// <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. ASP.NET MVC4(Razor)从客户端中检测到有潜在危险的 Request.Form 值

    SP.NET MVC4(Razor)从客户端中检测到有潜在危险的 Request.Form 值 “/”应用程序中的服务器错误. 从客户端(Content=" sdfdddd ..." ...

  2. JIRA官方:JIRA亮点介绍

    操作超级简单 简单不意味着要以牺牲功能作为代价.JIRA提供了友好.直观的可配置的Web界面,并支持大量的快捷键操作. 跟踪任何事务 跟踪问题.任务.需求,当然还有软件缺陷.定义你自己的事务类型来使之 ...

  3. 9款超酷的jQuery/CSS3插件

    Article From here: http://js.itivy.com/?p=1883 1.jQuery向前滑动切换焦点图 这款jQuery焦点图非常绚丽,切换图片的时候每张图片是向前滑动的,很 ...

  4. curl几个选项

    1.--cacert  选项请看https://curl.haxx.se/docs/sslcerts.html 2.CURL库怎样验证服务器证书 [复制链接] 中提到:你是客户端, 你希望的是: 你拿 ...

  5. .NET领域驱动设计—初尝(三:穿过迷雾走向光明)

    开篇介绍 在开始这篇富有某种奇妙感觉的文章之旅时我们先短暂的讨论一下关于软件开发方法论的简要: 纵观软件开发方法论,从瀑布模型.螺旋模型.RUP(统一软件开发过程).XP(极限编程).Agile(敏捷 ...

  6. 【Quick-COCOS2D-X 3.3 怎样绑定自己定义类至Lua之四】使用绑定C++至Lua的自己定义类

    续[Quick-COCOS2D-X 3.3 怎样绑定自己定义类至Lua之三]动手绑定自己定义类至Lua 之后.我们已经完毕了自己定义类至Lua的绑定.在接下来的环节,我们将使用它. 首先,我们须要确定 ...

  7. IOS架构师之路:我对IOS架构的点点认识(大纲)

    1.今天我鼓起了勇气,想纪录自己对IOS架构学习成长的点点滴滴. 从事IOS开发也有几年的时间,从刚開始最主要的语言.界面.逻辑,再到后面复杂点的线程.数据处理.网络请求.动画,最后到最复杂的底层音视 ...

  8. Lucene的多线程访问原则和同步,锁机制

    本文介绍lucene多线程环境下的使用原则和commit.lock与write.lock实现的锁机制. 设计之初就是服务于多线程环境,大多数情况下索引会被不至一个线程访问.索引时一个关键资源.在对这样 ...

  9. 2016年gift上线相关知识点记录

    1.图片初始化加载 2.如何判断横屏 function horAver() { if (window.orientation == 90 || window.orientation == -90) { ...

  10. SQL Server 已提交读快照 测试

    1. 打开数据库 已提交读快照 选项 2. 数据库 已提交读快照 模式下的测试 a) 测试表 Test b) 开启事务1,更新数据C2 = '200'(未提交) BEGIN TRAN ' WHERE ...