博客
关于我
强烈建议你试试无所不能的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

你可能感兴趣的文章
js的一些实用的小技巧
查看>>
vue-cli中理不清的assetsSubDirectory 和 assetsPublicPath
查看>>
iOS的UILabel设置居上对齐,居中对齐,居下对齐
查看>>
最流行的android组件大全
查看>>
【Android自定义控件】支持多层嵌套RadioButton的RadioGroup
查看>>
Swift - 内存泄露原因(循环强引用)及解决办法
查看>>
AIDL-Android接口描述语言实现跨进程通讯
查看>>
剑指Offer - 九度1354 - 和为S的连续正数序列
查看>>
LeetCode - Anagrams
查看>>
用MFC时,如果程序崩溃,检查内存,然后注意GDI数量,在任务管理器里选项-查看列-GDI数量...
查看>>
angular(转)
查看>>
ansible简单现网配置
查看>>
数据结构C++版-树
查看>>
JavaScript学习总结--创建对象(3_原型)
查看>>
FZU 2092 收集水晶 dp+bfs
查看>>
Java学习---网页编辑器FCKeditor使用详解
查看>>
IDEA开发React环境配置
查看>>
香港两日游
查看>>
cordova 打包发布正式版 apk
查看>>
常用集合比较
查看>>