ASP.NET知识总结(9.使用Cookies实现购物车)

ListInfo.aspx向购物车的添加商品的方法

private void GouWu(string name, double price, string id)

{

   //往购物车中添加商品

  HttpCookie hc = null;

  if (Request.Cookies["ShoppingCart"] == null)

  {

    //如果Cookies中不存在ShoppingCart,则创建

     hc = new HttpCookie("ShoppingCart");    
       }

  else

  {

    //如果Cookies中存在ShoppingCart,则取出

     hc= Request.Cookies["ShoppingCart"];            
       }

   bool flag=true;//标记在购物车中是否存在本次选择的物品

//在购物车的Cookies中查找是否存在这次要选择的物品

  foreach (string item in hc.Values)

  {

    if (item == id)

     {

      flag = false;

      break;

     }

  }

  if (flag)

  {

     //如果选择的内容在购物车中没有,则创建一个新的子键

     hc.Values.Add(id, id + "|" + name + "|" + price + "|" + 1 + "|");

  }

  else

   {

    //如果选择的内容在购物车中没,则删除原来的,添加一个新的

    int num = int.Parse(hc.Values[id].Split(new char[] { ‘|‘ })[3]) + 1;

     hc.Values.Remove(id);

    hc.Values.Add(id,id + "|" + name + "|" + price + "|" + num + "|");

  }

  hc.Expires = DateTime.Now.AddDays(1);

   Response.Cookies.Add(hc);

   Response.Redirect("ShoppingCart.aspx");

}

在ShoppingCart.aspx页面的Load事件中

List<ShoppingCart> list = new List<ShoppingCart>();

   //循环从购物车中取出物品添加到集合

  foreach (string item in Request.Cookies["ShoppingCart"].Values)

   {

    if (item != null)

    {

      char[] sp = { ‘|‘ };

string[] w = Request.Cookies["ShoppingCart"][item].Split(sp);

ShoppingCart gwc = new ShoppingCart();

         gwc.Id = w[0];

      gwc.Name = w[1];

       gwc.Price = int.Parse(w[2]);

       gwc.Number = int.Parse(w[3]);

       list.Add(gwc);

     }

   }

  GridView1.DataSource = list;

   GridView1.DataBind();

 ShoppingCart类代码

public class ShoppingCart

{

  public ShoppingCart()

  {

  //

  //TODO: 在此处添加构造函数逻辑

  //        
   }

      string name;

   public string Name

    {

      get { return name; }

       set { name = value; }

    }

    double price;

  public double Price     {         get { return price; }         set { price = value; }     }

    string id;

   public string Id     {         get { return id; }         set { id = value; }     }

     int number;

  public int Number     {         get { return number; }         set { number = value; }     }

}

时间: 2024-10-15 15:34:59

ASP.NET知识总结(9.使用Cookies实现购物车)的相关文章

asp相关知识整理

WWW----World Wide Web(万维网) URL----Uniform Resource Locator(统一资源定位符) HTTP----Hyper Text Transfer Protocol(超文本传输协议) HTML----Hyper Text Markup Language(超文本标记语言) XML----Extensible Markup Language(可扩展标记语言) ODBC----Open DataBase Connectivity(开放数据库连接标准) DLL

ASP.NET知识重新梳理(二)------关于ASP.NET知识学习流程的一些理解

ASP.NET知识的学习流程我大概是这么理解的,首先我们必须打好C#的基础,若是之前没有学过C++之类的面向对象语言作为基础,还是要好好看看继承派生多态之类的区别和联系的:其次,当今的编程不仅仅只是我们在学校课堂上所学的控制台应用程序,我们还要学习winfom,WPF之类的本地窗体应用:第三,每个公司的技术方向都是不同的,但是共同的地方是都需要数据库来存储自己的数据,而且sqlserver,mysql,oracle都是大同小异的,所以如果你之前的编程学的不是很好,做一个DBA吧,入门难度也不是很

ASP.NET知识重新梳理(三)------C#基础语法

C#基础语法:1.基本语法:无论代码中是否有空格,回车符,tab字符(统称为空白字符),C#编译器都不考虑这些字符: C#字符由一系列语句组成,每个语句由一个分号来结束: C#是一个块结构的语言,所有的语句都是代码块的一部分,这些块用花括号来界定("{"和"}"): C#中的注释:标记注释/*...*/ 单行注释//... 单行注释/// (可以配置VS,在编译项目时,提取这些注释后面的文本,创建一个特殊格式的文本文件,该文件可用于 创建文档说明书): C#代码是区

ASP.NET知识重新梳理(四)------关于流程控制语句

学习C语言的时候,我们就已经学习过流程控制语句, 也就是顺序,条件,循环三种.在TIOBE编程语言排行榜单中前几位的流程控制语句貌似几乎相同,所以说一通百通嘛, 就是这个道理. 一.顺序执行语句:顾名思义,按照顺序依次执行 二.条件语句: 1.if-else语句 1.只包含if关键词,没有else的情况: if (expression)     statement1 2.包含if和else的分支的情况: if (expression)     statement1;    else     st

ASP.NET知识集

ASP.NET知识集 编辑删除转载2015-06-23 16:31:55 标签:it //删除指定行数据时,弹出询问对话框 ((LinkButton)(e.Row.Cell[7].Controls[0]).Attributes.Add("onclick","return confirm('是否删除当前数据!')"); //注登录,清楚cookie.session session["userinfo"]=null; CookieHelper.wri

ASP.NET 知识体系结构

以下是我根据自身的情况来总结的ASP.NET 知识体系 ASP.NET 知识体系 C#--C#-知识梳理 ASP.NET WinForm ASP.NET MVC EF

你必须知道ASP.NET知识------关于动态注册httpmodule(对不起汤姆大叔)

一.关于动态注册的问题 很多人看过汤姆大叔的MVC之前的那点事儿系列(6):动态注册HttpModule ,其实汤姆大叔没有发现httpmodule动态注册的根本机制在哪里. 亦即:怎么动态注册?为什么能够动态注册? 汤姆大叔给了如下开篇 通过前面的章节,我们知道HttpApplication在初始化的时候会初始化所有配置文件里注册的HttpModules,那么有一个疑问,能否初始化之前动态加载HttpModule,而不是只从Web.config里读取? 答案是肯定的, ASP.NET MVC3

你必须知道ASP.NET知识------从IIS到httpmodule(第一篇)

一.写在前面 最近有时间,顺便将这系列洗完,接着上文:IIS各个版本知识总结 这篇文章原本计划写到HttpHandler为止,但限于篇幅就写到httpmodule 本文有不足之处,求指正,希望我能将它分析透彻. 二.回顾--我们还是从IIS说起 从上文(IIS各个版本知识总结)可以很清楚地意思到经典模式和集成模式的区别:集成模式是一个伟大的改进,让IIS集成了.NET功能(不在依靠之前IIS版本的aspnet_ISPAI.DLL). 所以,对于我们所开发的ASP.NET程序而言,这些完全不必知道

ASP.NET知识总结(7.状体保持)

客户端的状态保持方案:ViewState.隐藏域.Cookies.控件状态.URL查询参数 服务端的状态保持方案:Session(会话).Application.Caching(缓存).DataBase(数据库) ->Http协议是无状态的 ->所有的状态保持的方式 ->ViewState ->示例:使用服务器label控件,添加按钮,能实现+1吗? 查看源代码,发现生成了span,这是不能提交数据的,这究竟发生了什么? 本质:隐藏域 源代码中多了名为ViewState的hidde