博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[asp.net]异步提交数据库实现简单购物车
阅读量:4988 次
发布时间:2019-06-12

本文共 8232 字,大约阅读时间需要 27 分钟。

最近在做一个商场系统,分享一下自己做的购物车

购物车是用数据库实现的,当然也能用cookie实现

项目是基于三层实现,学生党表示还不会MVC

大概的思想就是----先读取出用户数据库中的购物车的商品,输出到前台,前台如果有购物车数量修改就通过异步提交给一般处理程序完成数量的更新

刚刚接触异步,大佬轻喷

Carts.cs

1 public class Carts 2     { 3                  4           ///  5         /// 购物车ID 6         ///  7         public int cartId { get; set; } 8         ///  9         /// 用户ID10         /// 11         public int userId { get; set; }12         /// 13         /// 产品ID14         /// 15         public int productId { get; set; }16         /// 17         /// 产品数量18         /// 19         public int productCount { get; set; }20         /// 21         /// 添加时间22         /// 23         public DateTime addTime { get; set; }24            25     }

前台页面

Cart.aspx

1    
2
3
4 5
6
7
8
9
10
11
12 <% foreach (var item in CartList)13 { %>14
15 16
22
23
25
26
34
35
36 <% } %>37
38
商品名称 积分 金额 优惠 数量 操作
17 18 19
<%= item.productName %>
20
21
<%=item.productStone %> <%= item.productPrice.ToString("0.00") %>24 减¥0.00 27 28 29 <%-- href="/handler/cartUpdate.ashx?id=<%=item.cartId %>&user=<%=item.userId %>&count=<%=item.productCount%>&type=add" --%>30 31 32 33 删除
39
40
41 42
43
件商品 总计:¥
44
返现:-¥0.00
45
46
47
48
总计(不含运费):
49 50
51
前台

前台jquery脚本

1 //防止数量文本框内有非数字值 2         function CheckValue(obj) { 3             var v = obj.value.replace(/[^\d]/g, ''); 4             if (v == '' || v == 'NaN') { 5                 obj.value = "1"; 6             } 7             else { 8                 obj.value = v; 9             }10         }11 12         //计算总金额13         function setTotal() {14             var sum = 0;15             var count = 0;16             $("#tab tr").each(function () {17                 if (!isNaN(parseInt($(this).find('input[class*=text_box]').val()))) {18                     sum += parseInt($(this).find('input[class*=text_box]').val()) * parseFloat($(this).find('.orange-font').text());19                     count += parseInt($(this).find('input[class*=text_box]').val());20                 }21             });22             $(".totalPrice").html(sum.toFixed(2));23             $(".totalCount").html(count);24 25         }26         setTotal();27 28         //异步更新购物车29         function update(obj, cid, user, pcount, select) {30             var json = { id: cid, userid: user, count: pcount, type: select };31             $.post("/handler/cartUpdate.ashx", json, function (data) {32                 if (data > 0) {33                     $(obj).parent().find("input[type=text]").val(data);34                     setTotal();35                 }36             })37         }
View Code

后台

Cart.aspx.cs

1 protected IEnumerable
CartList { get; set; } 2 3 CartsBLL cartsBLL = new CartsBLL(); 4 CartInfoBLL InfoBLL = new CartInfoBLL(); 5 ProductsBLL productsBLL = new ProductsBLL(); 6 protected void Page_Load(object sender, EventArgs e) 7 { 8 //CookieHelper.Set("user_carts", "[{\"BookId\":\"4995\",\"Count\":\"1\"},{\"BookId\":\"4996\",\"Count\":\"2\"}]", DateTime.Now.AddDays(10)); 9 var item = Request["item"];10 if (CurrentUser != null)11 {12 if (!string.IsNullOrEmpty(item))13 {14 // 添加购物车15 AddCart(item.ToInt32());16 }17 18 // 代码执行顺序19 CartList = InfoBLL.QueryList(-1, -1, new { userId = CurrentUser.userId }, "cartId", true);20 21 }22 else23 {24 // 离线购物车25 }26 }27 28 private void AddCart(int item)29 {30 // 执行添加购物车逻辑31 if (item == 0)32 {33 NotFound();34 return;35 }36 37 // 判断商品是否存在38 var exist = productsBLL.QuerySingle(item);39 if (exist == null)40 {41 NotFound();42 return;43 }44 // 有商品 判断当前商品是否在购物车中存在45 // 查询用户的购物车46 var userCart = cartsBLL.QueryList(-1, -1, new { userId = CurrentUser.userId }, "cartId");47 // 查询用户购物车是否存在该商品48 var cartExist = userCart.ToList
().Find(p => p.productId == item);49 if (cartExist == null)50 {51 // 没有52 cartExist = new Shop.Model.Carts();53 cartExist.productId = item;54 cartExist.productCount = 1;55 cartExist.userId = CurrentUser.userId;56 cartExist.addTime = DateTime.Now;57 cartsBLL.Insert(cartExist);58 59 }60 else61 {62 //有63 cartExist.productCount += 1;64 cartsBLL.Update(cartExist);65 }66 67 68 }
View Code

异步处理程序

CartUpdate.ashx

1 public void ProcessRequest(HttpContext context) 2         { 3             context.Response.ContentType = "text/html"; 4             int cartid = context.Request["id"].ToInt32(); 5             int userid = context.Request["userid"].ToInt32(); 6             int count = context.Request["count"].ToInt32(); 7             string type = context.Request["type"]; 8  9             10             BLL.CartsBLL cartsBLL = new BLL.CartsBLL();11             Model.Carts cart = cartsBLL.QuerySingle(cartid);12             if (cart == null)13             {14                 context.Response.Write("-1");15                 context.Response.End();16             }17             if (type == "add")18             {19                 //执行添加操作20                 cart.productCount++;21             }22             else if (type == "reduce")23             {24                 //执行减少操作25                 if (cart.productCount > 1)26                 {27                     cart.productCount--;28                 }29                 else30                 {31                     context.Response.Write("-1");32                     context.Response.End();33                 }34             }35             else36             {37                 //将数量修改为文本框失去焦点时的数量38                 if (count > 0)39                 {40                     cart.productCount = count;41                 }42 43             }44             cartsBLL.Update(cart);45             context.Response.Write(cart.productCount);46         }
CartUpdate.ashx

 

转载于:https://www.cnblogs.com/shoted/p/8489082.html

你可能感兴趣的文章
c++11特性与cocos2d-x 3.0之std::bind与std::function
查看>>
ARC078 D.Fennec VS. Snuke(树上博弈)
查看>>
VIM学习笔记一
查看>>
面向对象第四单元总结
查看>>
同源策略,Jsonp实现跨域
查看>>
二叉搜索树的后序遍历序列
查看>>
纯C#的ini格式配置文件读写
查看>>
每日分享
查看>>
【干货】大数据框架整理
查看>>
年轻人,能用钱解决的,绝不要花时间(转)
查看>>
python2.7.X 升级至Python3.6.X
查看>>
VS调试方法
查看>>
jquery拖拽实现UI设计组件
查看>>
javamail模拟邮箱功能获取邮件内容-中级实战篇【内容|附件下载方法】(javamail API电子邮件实例)...
查看>>
白话排序算法--冒泡排序
查看>>
imx6 18bit display
查看>>
Spring静态属性注入
查看>>
实验10:指针2
查看>>
【转】hibernate缓存:一级缓存和二级缓存
查看>>
第二个spring冲刺第3天
查看>>