[转].net cookie版购物车
本文转自: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版购物车的更多相关文章
- Cookie 版购物车
写一个JS文件 把相应的方法写在JS文件内 为了方便以后的调用 具体代码为 var Cart = function () { this.Count = 0; this.Total = 0; this ...
- 购物车非cookie版
2015.11.26购物车,非cookie版 [点击来,你发现被骗了(笑哭,笑哭,笑哭,源代码的话,留下邮箱吧,是在不好找这一时半会儿的.)] Jsp通过反射机制获取bean中的标签,但其实,可以没有 ...
- 【JSP】Cookie的使用及保存中文,并用Cookie实现购物车功能
Cookie是服务器存放在客户端的一些数据,比如密码,以及你曾经访问过的一些数据. 设置Cookie //设置cookie Cookie cookie = new Cookie("TOM&q ...
- 工作任务:模拟淘宝登录和购物车功能:使用cookie记录登录名,下次登录时能够记得上次的登录名,使用cookie模拟购物车功能,使用session记住登录信息并验证是否登录,防止利用url打开网站,并实现退出登录功能
登入界面<% Cookie[] cks =request.getCookies(); String str=null; for(Cookie ck:cks) { if(ck.getName(). ...
- 基于Cookie的购物车
var Cookies = {}; Cookies.set = function (name, value) { var argv = arguments; var argc = arguments. ...
- jQuery基于json与cookie实现购物车的方法
/** * 添加商品及数量到购物车cookie中,返回当前商品在cookie中的总数 */ function AddToShoppingCar(id, num, type) { var _num = ...
- Cookie实现购物车功能
这里的购物车暂时存放书,后期把参数改成Object,把方法抽取成接口,只要实现了接口的Object类都可以放进购物项,这样就实现了购物任何物品 使用购物项因为一个购物项可以包含某种商品的数量,总价等, ...
- javaweb学习——session和Cookie实现购物车功能
1.创建Book类,实现对图书信息的封装. package cn.it.sessionDemo.example1; import java.io.Serializable; /** * 该类实现对图书 ...
- 【Tomcat】JSP使用Session、Cookie实现购物车
购物界面shop.jsp 初始页面 添加商品后,在session中设置属性,重定向回到shop.jsp,然后根据session的内容显示结果 Cookie设置setMaxAge可以延长session的 ...
随机推荐
- Caocao's Bridges-HDU4738(Tarjin+求桥)
http://acm.hdu.edu.cn/showproblem.php?pid=4738 题目大意: 给定n个点和m条边 和每条边的价值,求桥的最小价值(最小桥) 看着挺简单的但是有好多细节: ...
- SpringBoot学习day01
SpringBoot目的在于创建和启动新的基于Spring框架的项目.SpringBoot会选择最合适的Spring子项目和第三方开源库进行整合.大部分SpringBoot应用只需要非常少量的配置就可 ...
- yum install tree 出错primary.sqlite.bz2: [Errno -1] Metadata file does not match checks 解决办法
Loaded plugins: fastestmirrorLoading mirror speeds from cached hostfilehttp://ftp.sjtu.edu.cn/centos ...
- PyMySQL - Python3 MySQL数据库连接 - 基本操作
一.Python连接MySQL数据库 1.导入模块 #导入模块 import pymysql 2.打开数据库连接 #打开数据库连接 #注意:这里已经假定存在数据库testdb,db指定了连接的 ...
- UVa 340 Master-Mind Hints(猜数字游戏的提示)
题意 猜数字游戏 统计猜的数字有多少个数字位置正确 有多少个数字在答案中出现可是位置不对 每一个字符仅仅能匹配一次 直接匹配每位数 #include<cstdio> #includ ...
- TCP_NODELAY和TCP_CORK nagle算法和cork算法
TCP_NODELAY 默认情况下,发送数据採用Nagle 算法.这样尽管提高了网络吞吐量,可是实时性却减少了,在一些交互性非常强的应用程序来说是不同意的.使用TCP_NODELAY选项能够禁止Nag ...
- 华为OJ2051-最小的K个数(Top K问题)
一.题目描述 描述: 输入n个整数,输出其中最小的k个. 输入: 输入 n 和 k 输入一个整数数组 输出: 输出一个整数数组 样例输入: 5 2 1 3 5 7 2 样例输出: 1 2 二.Top ...
- cocos2d-x 3.6版连连看版本号控制
为了以后的开发和管理.源代码开发必须要使用版本号控制.我们当然选择git来做版本号控制了. 假设你在终端输入git,提示不是一个命令的话.那就说明你的机器没有安装git工具.那就安装一个,百度之有非常 ...
- ShadowDOM
HTML5 ShadowDOM & CustomElements KeKeMars 关注 2015.12.09 15:20* 字数 1239 阅读 1626评论 2喜欢 2 Web组件由四部分 ...
- iOS 特定图片的button的旋转动画
近期做的东西中,要为一个有特定图片的button加入旋转动画,Demo代码例如以下: #import "ViewController.h" @interface ViewContr ...