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

你可能感兴趣的文章
STM32F103移植uCOSIII始终卡在PendSV或Systick处解决办法
查看>>
【Tomcat 6.0官方文档翻译】—— 简介
查看>>
Vue.js组件的通信之子组件向父组件的通信
查看>>
Mongodb部署
查看>>
配置当前用户使用豆瓣pip源
查看>>
Linux定时执行PHP
查看>>
如何创建响应的jQuery图像网格效果
查看>>
Eclipse安装与使用
查看>>
使用Log4j日志工具
查看>>
移动端input输入placeholder垂直不居中
查看>>
焦旭超201771010109《面向对象程序设计(java)》第七周学习总结
查看>>
PHP 反射API说明
查看>>
Cortex-M 实现互斥操作的三种方法
查看>>
in 和 exists的区别
查看>>
Vuex异步请求数据后,在组件中获取状态的方法
查看>>
汤姆大叔文章列表
查看>>
【刷题】BZOJ 5293 [Bjoi2018]求和
查看>>
PowerShell 远程执行任务
查看>>
Golang 入门 : 结构体(struct)
查看>>
9.17感悟
查看>>