本文转自:http://www.sulong.cc/article/program/aspx/110613114249.html

#region 添加到购物车AddShoppingCar
/// <summary>
/// 添加到购物车AddShoppingCar
/// </summary>
/// <param name="num">数量 如果存在产品 负数是减少
/// 正数是增加 如果不存在 直接增加</param>
/// <param name="id">货物ID</param>
/// <param name="expires">cookies保存的天数</param>
/// <remarks>这里的方法就是把在原有的Cookie基础上判断是否有
/// 这个产品 如果有 在原有数量上增加 没有 就直接增加 如果是负
/// 数 就是减少 如果负数的数量大于等于
/// 原有数量 设置为0 对应后面的读出操作</remarks>
public static void AddShoppingCar(string num, string id, int expires)
{
if (System.Web.HttpContext.Current.Request.Cookies["Products"] != null)
{
System.Web.HttpCookie cookie;
string cookievalue = System.Web.HttpContext.Current.Request.Cookies["Products"].Value;
if (System.Web.HttpContext.Current.Request.Cookies["Products"].Values[id.ToString()] == null)
{
cookievalue = cookievalue + "&" + id + "=" + num; }
else
{
int num1 = int.Parse(System.Web.HttpContext.Current.Request.Cookies["Products"].Values[id.ToString()].ToString()) + int.Parse(num);
if (num1 > )
{
System.Web.HttpContext.Current.Request.Cookies["Products"].Values[id.ToString()] = num1.ToString();
}
else
{
System.Web.HttpContext.Current.Request.Cookies["Products"].Values[id.ToString()] = "";
}
cookievalue = System.Web.HttpContext.Current.Request.Cookies["Products"].Value;
}
cookie = new System.Web.HttpCookie("Products", cookievalue);
if (expires != )
{
DateTime dt = DateTime.Now;
TimeSpan ts = new TimeSpan(expires, , , );
cookie.Expires = dt.Add(ts);
}
System.Web.HttpContext.Current.Response.AppendCookie(cookie);
}
else
{
System.Web.HttpCookie newcookie = new HttpCookie("Products");
if (expires != )
{
DateTime dt = DateTime.Now;
TimeSpan ts = new TimeSpan(expires, , , );
newcookie.Expires = dt.Add(ts);
}
newcookie.Values[id.ToString()] = num;
System.Web.HttpContext.Current.Response.AppendCookie(newcookie);
}
}
#endregion #region 添加到购物车AddShoppingCar
/// <summary>
/// 添加到购物车AddShoppingCar
/// </summary>
/// <param name="num">数量 如果存在产品 负数是减少
/// 正数是增加 如果不存在 直接增加</param>
/// <param name="dt">
/// 循环读出来的DATATABLE
/// </param>
/// <param name="id">货物ID</param>
/// <param name="expires">cookies保存的天数</param>
/// <remarks>这里的方法就是把在原有的Cookie基础上判断是否有
/// 这个产品 如果有 在原有数量上增加 没有 就直接增加 如果是负
/// 数 就是减少 如果负数的数量大于等于
/// 原有数量 设置为0 对应后面的读出操作</remarks>
public static void AddShoppingCar(DataTable dt, int expires)
{ if (System.Web.HttpContext.Current.Request.Cookies["Products"] != null)
{
System.Web.HttpCookie cookie;
string cookievalue = System.Web.HttpContext.Current.Request.Cookies["Products"].Value;
for (int i = ; i < dt.Rows.Count; i++)
{
if (System.Web.HttpContext.Current.Request.Cookies["Products"].Values[dt.Rows[i]["id"].ToString().ToString()] == null)
{
cookievalue = cookievalue + "&" + dt.Rows[i]["id"].ToString() + "=" + dt.Rows[i]["num"].ToString();
}
else
{
int num1 = int.Parse(System.Web.HttpContext.Current.Request.Cookies["Products"].Values[dt.Rows[i]["id"].ToString().ToString()].ToString()) + int.Parse(dt.Rows[i]["num"].ToString());
if (num1 > )
{
System.Web.HttpContext.Current.Request.Cookies["Products"].Values[dt.Rows[i]["id"].ToString().ToString()] = num1.ToString();
}
else
{
System.Web.HttpContext.Current.Request.Cookies["Products"].Values[dt.Rows[i]["id"].ToString().ToString()] = "";
}
cookievalue = System.Web.HttpContext.Current.Request.Cookies["Products"].Value;
}
}
cookie = new System.Web.HttpCookie("Products", cookievalue);
if (expires != )
{
DateTime time1 = DateTime.Now;
TimeSpan ts = new TimeSpan(expires, , , );
cookie.Expires = time1.Add(ts);
}
System.Web.HttpContext.Current.Response.AppendCookie(cookie);
}
else
{
System.Web.HttpCookie newcookie = new HttpCookie("Products");
if (expires != )
{
DateTime time1 = DateTime.Now;
TimeSpan ts = new TimeSpan(expires, , , );
newcookie.Expires = time1.Add(ts);
}
for (int i = ; i < dt.Rows.Count; i++)
{
newcookie.Values[dt.Rows[i]["id"].ToString()] = dt.Rows[i]["num"].ToString();
}
System.Web.HttpContext.Current.Response.AppendCookie(newcookie);
} }
#endregion #region 根据ID删除产品RemoveShoppingCar
/// <summary>
/// 根据ID删除产品RemoveShoppingCar
/// </summary>
/// <param name="id">产品ID</param>
/// <remarks>
/// 就是设置商品数量为0
/// 本来增加方法可以实现
/// 但是需要读出来原有数量
/// 所以为了避免繁琐 有此方法
/// </remarks>
public static void RemoveShoppingCar(string id)
{
if (System.Web.HttpContext.Current.Request.Cookies["Products"] != null && System.Web.HttpContext.Current.Request.Cookies["Products"].Values[id] != null)
{
System.Web.HttpCookie cookie;
System.Web.HttpContext.Current.Request.Cookies["Products"].Values[id] = "";
string cookievalue = System.Web.HttpContext.Current.Request.Cookies["Products"].Value;
cookie = new System.Web.HttpCookie("Products", cookievalue);
System.Web.HttpContext.Current.Response.AppendCookie(cookie);
}
}
#endregion #region 删除购物车RemoveShoppingCar
/// <summary>
/// 删除购物车RemoveShoppingCar
/// </summary>
/// <remarks>
/// 使购物车的Cookie为空
/// </remarks>
public static void RemoveShoppingCar()
{
if (System.Web.HttpContext.Current.Request.Cookies["Products"] != null && System.Web.HttpContext.Current.Request.Cookies["Products"].Values.Count != )
{
System.Web.HttpContext.Current.Request.Cookies["Products"].Expires = System.DateTime.Now.AddHours(-);
System.Web.HttpContext.Current.Response.AppendCookie(System.Web.HttpContext.Current.Request.Cookies["Products"]);
}
}
#endregion #region 根据ID修改产品UpdateShoppingCar
/// <summary>
/// 根据ID修改产品UpdateShoppingCar
/// </summary>
/// <param name="id">产品ID</param>
/// <param name="num">产品数量</param>
/// <remarks>
/// 更新产品的数量
/// </remarks>
public static void UpdateShoppingCar(string id,string num)
{
if (System.Web.HttpContext.Current.Request.Cookies["Products"] != null && System.Web.HttpContext.Current.Request.Cookies["Products"].Values[id] != null)
{
System.Web.HttpCookie cookie;
System.Web.HttpContext.Current.Request.Cookies["Products"].Values[id] = num;
string cookievalue = System.Web.HttpContext.Current.Request.Cookies["Products"].Value;
cookie = new System.Web.HttpCookie("Products", cookievalue);
System.Web.HttpContext.Current.Response.AppendCookie(cookie);
}
}
#endregion #region 得到所有的产品列表GetAllChoppingCar
/// <summary>
/// 得到所有的产品列表GetAllChoppingCar
/// </summary>
/// <returns>所有产品的数据集</returns>
/// <remarks>因为对DataTable操作比较方便(个人喜好)
/// 这里是把里面的字符串分割为Datatable</remarks>
public static DataTable GetAllChoppingCar()
{
if (System.Web.HttpContext.Current.Request.Cookies["Products"] != null && System.Web.HttpContext.Current.Request.Cookies["Products"].Value.Trim() != "")
{
DataColumn dcid = new DataColumn("id");
DataColumn dcnum = new DataColumn("num");
DataTable dt = new DataTable();
dt.Columns.Add(dcid);
dt.Columns.Add(dcnum);
string[] str = System.Web.HttpContext.Current.Request.Cookies["Products"].Value.Split("&");
for (int i = ; i < str.Length; i++)
{
DataRow dr = dt.NewRow();
dr["id"] = (str[i].Split("="))[].ToString();
dr["num"] = (str[i].Split("="))[].ToString();
if (int.Parse((str[i].Split("="))[].ToString()) != )
{
dt.Rows.Add(dr);
}
}
return dt;
}
else
{
return null;
}
}
#endregion #region 关于购物车Cookie里的DataTable的操作GetCookieByDataTable
/// <summary>
/// 关于购物车Cookie里的DataTable的操作GetCookieByDataTable
/// </summary>
/// <param name="dt"></param>
/// <remarks>
/// 把读出来的DataTable转换为字符串
/// 根据的规则是自己定的 &符号是分开产品
/// =号是分开产品ID和产品价格
/// </remarks>
/// <returns></returns>
public static String GetCookieByDataTable(DataTable dt)
{
String datatable = "";
if (dt.Rows.Count > )
{
for (int i = ; i < dt.Rows.Count; i++)
{
datatable = dt.Rows[i]["id"].ToString() + "=" + dt.Rows[i]["num"].ToString() + "&" + datatable;
}
}
return datatable;
}
#endregion #region 把字符串转换为datatable GetDataTable
/// <summary>
/// 把字符串转换为datatable GetDataTable
/// </summary>
/// <param name="datatable"></param>
/// <remarks>
/// 把Cookie里的字符串转换为DataTable
/// 是GetCookieByDataTable的反操作
/// </remarks>
/// <returns></returns>
public static DataTable GetDataTable(string datatable)
{
DataColumn dcid = new DataColumn("id");
DataColumn dcnum = new DataColumn("num");
DataTable dt = new DataTable();
dt.Columns.Add(dcid);
dt.Columns.Add(dcnum);
if (!datatable.StartsWith("&"))
{
string[] str = datatable.Split("&");
for (int i = ; i < str.Length; i++)
{
DataRow dr = dt.NewRow();
dr["id"] = (str[i].Split("="))[].ToString();
dr["num"] = (str[i].Split("="))[].ToString();
if (int.Parse((str[i].Split("="))[].ToString()) != )
{
dt.Rows.Add(dr);
}
}
}
else
{
DataRow dr = dt.NewRow();
dr["id"] = (datatable.Split("="))[].ToString();
dr["num"] = (datatable.Split("="))[].ToString();
if (int.Parse((datatable.Split("="))[].ToString()) != )
{
dt.Rows.Add(dr);
}
}
return dt;
}
#endregion

[转].net cookie版购物车的更多相关文章

  1. Cookie 版购物车

    写一个JS文件  把相应的方法写在JS文件内 为了方便以后的调用 具体代码为 var Cart = function () { this.Count = 0; this.Total = 0; this ...

  2. 购物车非cookie版

    2015.11.26购物车,非cookie版 [点击来,你发现被骗了(笑哭,笑哭,笑哭,源代码的话,留下邮箱吧,是在不好找这一时半会儿的.)] Jsp通过反射机制获取bean中的标签,但其实,可以没有 ...

  3. 【JSP】Cookie的使用及保存中文,并用Cookie实现购物车功能

    Cookie是服务器存放在客户端的一些数据,比如密码,以及你曾经访问过的一些数据. 设置Cookie //设置cookie Cookie cookie = new Cookie("TOM&q ...

  4. 工作任务:模拟淘宝登录和购物车功能:使用cookie记录登录名,下次登录时能够记得上次的登录名,使用cookie模拟购物车功能,使用session记住登录信息并验证是否登录,防止利用url打开网站,并实现退出登录功能

    登入界面<% Cookie[] cks =request.getCookies(); String str=null; for(Cookie ck:cks) { if(ck.getName(). ...

  5. 基于Cookie的购物车

    var Cookies = {}; Cookies.set = function (name, value) { var argv = arguments; var argc = arguments. ...

  6. jQuery基于json与cookie实现购物车的方法

    /** * 添加商品及数量到购物车cookie中,返回当前商品在cookie中的总数 */ function AddToShoppingCar(id, num, type) { var _num = ...

  7. Cookie实现购物车功能

    这里的购物车暂时存放书,后期把参数改成Object,把方法抽取成接口,只要实现了接口的Object类都可以放进购物项,这样就实现了购物任何物品 使用购物项因为一个购物项可以包含某种商品的数量,总价等, ...

  8. javaweb学习——session和Cookie实现购物车功能

    1.创建Book类,实现对图书信息的封装. package cn.it.sessionDemo.example1; import java.io.Serializable; /** * 该类实现对图书 ...

  9. 【Tomcat】JSP使用Session、Cookie实现购物车

    购物界面shop.jsp 初始页面 添加商品后,在session中设置属性,重定向回到shop.jsp,然后根据session的内容显示结果 Cookie设置setMaxAge可以延长session的 ...

随机推荐

  1. Apache 使用localhost(127.0.0.1)可以访问,使用本机IP(局域网)不能访问

    本机ip是:192.168.1.25,输入后提示: Forbidden You don't have permission to access / on this server 对于此问题的解决办法, ...

  2. POJ——T 2976 Dropping tests

    http://poj.org/problem?id=2976 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13861   ...

  3. ZOJ3953 ZJU2017校赛(贪心)

    题意:给出n个区间,求至少删掉多少个区间使得不存在区间a, b, c 两两相交    (定义两个区间相交是,区间[l1, r1]和区间[l2, r2]相交,当且仅当存在一个数x,l1<=x< ...

  4. JFileChooser 中文API

    javax.swing类 JFileChooser java.lang.Object java.awt.Component java.awt.Container javax.swing.JCompon ...

  5. Django学习系列之模板系统

    一.模板标签 if/else {%  if  %}标签检查一个变量的值是否为真或者等于另外一个值,如果为真,系统会执行{%  if  %}和{%  endif  %}之间的代码块,例如: {% if ...

  6. Jafka源码分析——LogManager

    在Kafka中,LogManager负责管理broker上全部的Log(每个topic-partition为一个Log). 通过阅读源码可知其详细完毕的功能例如以下: 1. 依照预设规则对消息队列进行 ...

  7. Android 5.1 Settings源代码简要分析

    转载请注明出处,谢谢~http://blog.csdn.net/u011974987/article/details/51004854. 概述: 先声明:本人工作快两年了,仍是菜鸟级别的.羞愧啊!曾经 ...

  8. Python爬虫开发【第1篇】【代理】

    1.简单的自定义opener() import urllib2 # 构建一个HTTPHandler 处理器对象,支持处理HTTP请求 http_handler = urllib2.HTTPHandle ...

  9. J2SE基础:11.异常处理

    1:异常的概念: 异常是程序在执行时发生的事件(异常发生在执行期间). 程序出现错误.打断原本的运行流程. 2:Java中处理异常. 在Java中.异常被封装成一个对象.(属性和方法) 3:异常产生 ...

  10. 2016/1/18 Java开发中的23种设计模式详解(转)

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...