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

你可能感兴趣的文章
http://lorempixel.com/ 可以快速产生假图
查看>>
工程经验总结之吹水"管理大境界"
查看>>
为什么JS动态生成的input标签在后台有时候没法获取到
查看>>
20189210 移动开发平台第六周作业
查看>>
java之hibernate之基于外键的双向一对一关联映射
查看>>
rxjs一句话描述一个操作符(1)
查看>>
第一次独立上手多线程高并发的项目的心路历程
查看>>
ServiceStack 介绍
查看>>
Centos7下载和安装教程
查看>>
无谓的通宵加班之后的思索
查看>>
S1的小成果:MyKTV系统
查看>>
从setting文件导包
查看>>
编写一个函数isMerge,判断一个字符串str是否可以由其他两个字符串part1和part2“组合”而成...
查看>>
union和union all
查看>>
Github 开源:使用控制器操作 WinForm/WPF 控件( Sheng.Winform.Controls.Controller)
查看>>
PMD使用提醒
查看>>
Codeforces 887D Ratings and Reality Shows
查看>>
论文《A Generative Entity-Mention Model for Linking Entities with Knowledge Base》
查看>>
CentOS 6.7编译安装PHP 5.6
查看>>
Linux记录-salt分析
查看>>