دوستان من یه سایت سفارش آنلاین زدم ، این سایت در هاست من به صورت لوکال ایرادی نداشت و محصولات رو هم در سبد خرید اضافه میکرد ، موقعی هم که آپلود کردم مشکلی نداشت اما بعد از مدتی داخل سایت وقتی صفحه رو رفرش می کنم یا کالایی رو اضافه می کنم چندتا کالای دیگه به صورت خود کار به سایت اضافه میشن ، بدون انتخاب .. از دوستان که توانایی کمک دارند تقاضا دارم راهنماییم کنند تا کدها رو هم در اختیارشون قرار بدم..
آدرس سایتم هم www.sobooneh.ir
با تشکر
protected ShoppingCart() { } public static readonly ShoppingCart MyShopCart; static ShoppingCart() { if (HttpContext.Current.Session["ShoppingCart"] == null) { MyShopCart = new ShoppingCart(); MyShopCart.Items = new List<CartItem>(); HttpContext.Current.Session["ShoppingCart"] = MyShopCart; } else { MyShopCart = (ShoppingCart)HttpContext.Current.Session["ShoppingCart"]; } }
این هم قسمتی از کلاس ایجاد سبد خریدم..
به احتمال زیاد درخواست شما چند بار تکرار میشه
اگر با WebApi پیاده سازی کردید یا Ajax با کد ها بررسی کنید ببینید تداخلی ندارد
چگونه پیاده سازی کردید ؟
گویا مشکل اینجاست که سبد خرید همه یکی هست یعنی اگر کاربری کالایی را در جایی به سبد خریدش اضافه می کند برای کاربر دیگر هم که همزمان در حال خرید است همان کالا اضافه می شود.من از سشن استفاده کرده ام ..
@{ Random rnd = new Random(); string city = (Convert.ToString(item.City_Id.Value)); bsi.city_id = Convert.ToInt32(Convert.ToString(rnd.Next(100, 999)) + city); string pack = (Convert.ToString(item.Food_Id.Value)); bsi.package_id = Convert.ToInt32(Convert.ToString(rnd.Next(100, 999)) + pack); bsi.locatione = Convert.ToInt32(ViewBag.location_id); bsi.share_id = Convert.ToInt32(Convert.ToString(rnd.Next(100, 999)) + 1000 + Convert.ToString(rnd.Next(10, 99))); } @Ajax.ActionLink("اضافه به سبد", "AddToCart", new { pakage_id = bsi.package_id, city_id = bsi.city_id, location_id = bsi.locatione, shared_id = bsi.share_id }, new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "basket"})
این هم کد اضافه به سبدم public ActionResult AddToCart(int pakage_id, int city_id, int location_id, int shared_id) { Sobooneh.Models.Utility.basket_items bsi = new Models.Utility.basket_items(); string pack = Convert.ToString(pakage_id); pakage_id = Convert.ToInt32(pack.Substring(3)); string city = Convert.ToString(city_id).Trim(); city_id = Convert.ToInt32(city.Substring(3)); string share = Convert.ToString(shared_id); share = share.Substring(3); int length = share.Length; int index = length - 2; char[] share1 = share.ToCharArray(); char[] result = new char[share1.Length]; for (int i = 0, j = share.Length - 1; i < share.Length; i++, j--) { result[i] = share1[j]; } string share2 = new string(result); string share_r = share2.Substring(2); char[] share3 = share_r.ToCharArray(); char[] result2 = new char[share_r.Length]; for (int i = 0, j = share_r.Length - 1; i < share_r.Length; i++, j--) { result2[i] = share3[j]; } string share_rr = new string(result2); shared_id = Convert.ToInt32(share_rr); bsi.package_id = pakage_id; bsi.share_id = shared_id; bsi.locatione = location_id; bsi.city_id = city_id; ShoppingCart.MyShopCart.AddItem(bsi); int count = ShoppingCart.MyShopCart.quantity_basket(); return Json(count); }
آیا ممکنه به دلیل این باشه که به جای ارسال id کالا به سبد خرید یک شی از یک کلاس که به ازای هر کالا ایجاد میشه به سبد میفرستم باشه؟ منظورم شی bsi از کلاس Utility.basket_items هست
سبد خرید کاربر را باید در Session یا بانک نگه داری کنید
این لینک رو ببینید
طبق کد زیر سبد خرید را در سشن ایجاد کرده ام..
protected ShoppingCart() { } public static readonly ShoppingCart MyShopCart; static ShoppingCart() { if (HttpContext.Current.Session["ShoppingCart"] == null) { MyShopCart = new ShoppingCart(); MyShopCart.Items = new List<CartItem>(); HttpContext.Current.Session["ShoppingCart"] = MyShopCart; } else { MyShopCart = (ShoppingCart)HttpContext.Current.Session["ShoppingCart"]; } }
اگر سشن باشد پس مشکلی نیست و برای هر کاربر جدا خواهد بود
یه نگاهی به نمونه هایی که دادم بندازید
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)