مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

salehi_so

عضویت از 1394/08/04

مشکل در سبد خرید

  • دوشنبه 1 آذر 1395
  • 23:51
تشکر میکنم

دوستان من یه سایت سفارش آنلاین زدم ، این سایت در هاست من به صورت لوکال ایرادی نداشت و محصولات رو هم در سبد خرید اضافه میکرد ، موقعی هم که آپلود کردم مشکلی نداشت اما بعد از مدتی داخل سایت وقتی صفحه رو رفرش می کنم یا کالایی رو اضافه می کنم چندتا کالای دیگه به صورت خود کار به سایت اضافه میشن ، بدون انتخاب .. از دوستان که توانایی کمک دارند تقاضا دارم راهنماییم کنند  تا کدها رو هم در اختیارشون قرار بدم..

آدرس سایتم هم 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"];
            }
        }

این هم قسمتی از کلاس ایجاد سبد خریدم..

پاسخ های این پرسش

تعداد پاسخ ها : 7 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 2 آذر 1395
  • 08:40

به احتمال زیاد درخواست شما چند بار تکرار میشه

اگر با WebApi پیاده سازی کردید یا Ajax با کد ها بررسی کنید ببینید تداخلی ندارد

چگونه پیاده سازی کردید ؟

کاربر سایت

salehi_so

عضویت از 1394/08/04

  • سه شنبه 2 آذر 1395
  • 08:57

گویا مشکل اینجاست که سبد خرید همه یکی هست یعنی اگر کاربری کالایی را در جایی به سبد خریدش اضافه می کند برای کاربر دیگر هم که همزمان در حال خرید است همان کالا اضافه می شود.من از سشن استفاده کرده ام ..

 @{
                                     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"})

کاربر سایت

salehi_so

عضویت از 1394/08/04

  • سه شنبه 2 آذر 1395
  • 09:09
این هم کد اضافه به سبدم

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);
        }

کاربر سایت

salehi_so

عضویت از 1394/08/04

  • سه شنبه 2 آذر 1395
  • 09:59

آیا ممکنه به دلیل این باشه که به جای ارسال id کالا به سبد خرید یک شی از یک کلاس که به ازای هر کالا ایجاد میشه به سبد میفرستم باشه؟ منظورم شی bsi  از کلاس Utility.basket_items هست

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 2 آذر 1395
  • 12:41

سبد خرید کاربر را باید در Session یا بانک نگه داری کنید

این لینک رو ببینید

کاربر سایت

salehi_so

عضویت از 1394/08/04

  • سه شنبه 2 آذر 1395
  • 12:48

طبق کد زیر سبد خرید را در سشن ایجاد کرده ام..

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"];
            }
        }

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 2 آذر 1395
  • 12:53

اگر سشن باشد پس مشکلی نیست و برای هر کاربر جدا خواهد بود

یه نگاهی به نمونه هایی که دادم بندازید

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)