سلام
من یه تیبل جدا دارم که انجا ایدی دسته بندی و ایدی محصول را دارم که یک محصول چند دسته بندی داره
برای پیدا کردم اون محصولات از این کد استفاده میکنم که دسته بندی مورد نظر را سلکت میکنم و محصولاتش را اینکلود ایا این کار اشتباه هست؟
ViewData["CarLux"]= _context.ProdctSelectedGroups.Include(i => i.Product).Where(w => w.GroupID == 7).Take(6).OrderByDescending(o=>o.PgId).ToList();
سلام دوست عزیز
نه کاری که انجام دادید صحیح هست اما 2 تا کار اشتباهه دیگه انجام دادید !
1 - دارید مقدارتون رو میریزید توی ViewData که به صفحه پاس بدید که اینکار صحیح نیست و بجاش اگه از ViewModel ها استفاده کنید صحیح تره
2 - شماره گروه و مقدار Take رو باید بعنوان پارامتر ورودی اون تابع درنظر بگیرید و اینطوری بصورت هاردکدی مقداردهی نکنید تا بتونید یه کوئری داینامیک داشته باشید.
موفق باشید.
خب من به این صورت هم نوشتم ولی وقتی صفحه لود میشه میره همه را میاره وبعد داخل صفحه که با مدل شرط را میذارم میره و فیلتر میکنه یعنی 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>
}
اینجوری اول توی لود صفحه اول میره همه را میاره بعد توی صفحه اول شرط را اعمال میکنه
فهمیدم برای دوستان اعلام میکنم مدل را باید از
public IQueryable<ProdctSelectedGroup> ProdctSelectedGroup { get; set; }
گرفت اون موقع تا زمان گرفتن شرط اجرا نمیشه