• 1400/02/30

سلکت کردن محصولاتی که در یک دسته بندی هستند :

سلام

من یه تیبل جدا دارم که انجا ایدی دسته بندی و ایدی محصول را دارم که یک محصول چند دسته بندی داره 

برای پیدا کردم اون محصولات از این کد استفاده میکنم که دسته بندی مورد نظر را سلکت میکنم و محصولاتش را اینکلود ایا این کار اشتباه هست؟

ViewData["CarLux"]= _context.ProdctSelectedGroups.Include(i => i.Product).Where(w => w.GroupID == 7).Take(6).OrderByDescending(o=>o.PgId).ToList();
  • 1400/02/30
  • ساعت 07:40

سلام دوست عزیز

نه کاری که انجام دادید صحیح هست اما 2 تا کار اشتباهه دیگه انجام دادید !

1 - دارید مقدارتون رو میریزید توی ViewData که به صفحه پاس بدید که اینکار صحیح نیست و بجاش اگه از ViewModel ها استفاده کنید صحیح تره

2 - شماره گروه و مقدار Take رو باید بعنوان پارامتر ورودی اون تابع درنظر بگیرید و اینطوری بصورت هاردکدی مقداردهی نکنید تا بتونید یه کوئری داینامیک داشته باشید.

موفق باشید.


  • 1400/02/30
  • ساعت 09:12

خب من به این صورت هم نوشتم ولی وقتی صفحه لود میشه میره همه را میاره وبعد داخل صفحه که با مدل شرط را میذارم میره و فیلتر میکنه یعنی 2 بار سلکت میزنه

public List<ProdctSelectedGroup> ProdctSelectedGroup { get; set; }

public void OnGet()
        {
            ProdctSelectedGroup = _context.ProdctSelectedGroups.Include(i => i.Product).ToList();

        }

توی صفحه

 @foreach (var item in Model.ProdctSelectedGroup.Where(w => w.GroupID == 8).Take(6).OrderByDescending(o => o.PgId))
                            {
                                <div class="col-lg-4 col-md-6 mt-4 pt-2">
                                    <div class="blog position-relative overflow-hidden shadow rounded">
                                        <div class="position-relative">
                                            <img src="images/ProductImages/@item.Product.ImageName" class="img-fluid rounded-top" alt="">
                                            <div class="overlay rounded-top bg-dark"></div>
                                        </div>
                                        <div class="content p-4">
                                            <h4><a href="javascript:void(0)" class="title text-dark">@item.Product.Title</a></h4>
                                            <div class="post-meta mt-3">
                                                <a href="javascript:void(0)" class="text-muted float-right readmore">ادامه مطلب <i class="mdi mdi-chevron-right"></i></a>
                                                <ul class="list-unstyled mb-0">
                                                    <li class="list-inline-item mr-2"><a href="javascript:void(0)" class="text-muted like"><i class=""></i>قیمت روزانه : @item.Product.Price.ToString("#,0") تومان</a></li>
                                                </ul>
                                            </div>
                                        </div>
                                        <div class="author">
                                            <small class="text-light user d-block"><i class="mdi mdi-account"></i>@item.Product.Title</small>
                                            <small class="text-light date"><i class="mdi mdi-calendar-check"></i> @item.Product.CreateDate.ToShamsi()</small>
                                        </div>
                                    </div>
                                </div>
                            }

اینجوری اول توی لود صفحه اول میره همه را میاره بعد توی صفحه اول شرط را اعمال میکنه


  • 1400/02/30
  • ساعت 09:29

فهمیدم برای دوستان اعلام میکنم مدل را باید از 

public IQueryable<ProdctSelectedGroup> ProdctSelectedGroup { get; set; }

گرفت اون موقع تا زمان گرفتن شرط اجرا نمیشه


logo-samandehi