您的位置:首页 > 编程语言 > ASP

ASP.NET MVC Ajax 购物车的实现

2017-04-14 18:29 447 查看
该购物车是用 Ajax 访问 Control 内的方法做的, 因此会频繁访问数据库(反真我做的是毕业设计。。。哈哈)其实,对于以前熟悉 了webforms 的我来说,要用新的思路做东西,我的内心是拒绝的。。1.购物车表图2.AJAX 访问Control
var jsonData = "{\"albumId\":\"" + $("#_number").text() + "\", \"quantity\":\""+ $("#qunatity").val() + "\"}";//购买量+专辑ID
$.ajax({
type:"post",
dataType: "text",
contentType: "application/json",
url: "/Cart/CartAdd",//访问的方法
data: jsonData,
success: function (data) {
alert(data);
},
//error: function (XMLHttpRequest, textStatus, errorThrown) {
//    alert(XMLHttpRequest.status);
//    alert(XMLHttpRequest.readyState);
//    alert(textStatus);
//}
});
3.Control 对应方法
[HttpPost]
public string CartAdd(string albumId,string quantity//一直不明白怎么才能接收JSON 并解析,求大神教育
{
int Id = int.Parse(albumId);
int num = int.Parse(quantity);
int cartid=0;
string username = Session["username"].ToString();
tb_cartDetails cartDetail = new tb_cartDetails();
int storage = (from al in musicDB.tb_album
where al.albumId == Id
select al.leftNum).Single();
if (num >storage||num==storage)
return "库存不足,无法完成添加";
SqlParameter uname = new SqlParameter("@username", username);
var cart = musicDB.Database.SqlQuery<tb_cart>(
"exec proc_userid @username", uname
).Single();

cartid = cart.cartId;

int count = musicDB.tb_cartDetails.Where(cd=>cd.cartId==cartid).Count();//判断购物车内物品是否有物品

if (count == 0)
{
try
{
cartDetail.cartId = cartid;
cartDetail.albumId = Id;
cartDetail.quantity = num;

musicDB.tb_cartDetails.Add(cartDetail);//不存在则添加
musicDB.SaveChanges();
}
catch(Exception e) {
throw e;
}
}

else
{

int c = (from cd in musicDB.tb_cartDetails
where cd.cartId==cartid&&cd.albumId==Id
select cd).Count();
if (c > 0)
{
try
{
var album = musicDB.tb_cartDetails.Where(aid => aid.albumId == Id).Single();//已存在物品,则对应物品数量更新
album.quantity += num;
musicDB.SaveChanges();
}
catch (Exception e){
throw e;
}

}

}

return "商品添加成功";

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  asp.net ajax mvc