محدود سازی لیست پیمایش در Razor
سلام دوستان
من میخوام تو razor با استفاه از حلقه foreach یک لیست از محصولات رو از دیتابیس بخونم و نمایش بدم ولی میخوام محدودش کنم فقط محصولاتی رو که مربوط به id کاربر فعلی سیستم که login کرده رو نمایش بده نه کل محصولات رو!
مشکل من اینه که میاد کل table رو محصولاتش رو به من نشون میده برای تمامی کاربران
چطوری باید محدودش کنم؟
@foreach (var item in Model) { <tr> <td colspan="1"> @Html.DisplayFor(modelItem => item.Product_Name) </td> <td> @Html.DisplayFor(modelItem => item.Product_Price) </td> <td> <img src="~/Content/_images/product/@item.Product_PicIndex" width="40px" height="40px" alt="@item.Product_Name" /> </td> <td> @PersianDateExtensionMethods.ToPeString(item.Product_Date, "dddd, dd MMMM,yyyy") </td> <td> @{ Rep_User rep_download = new Rep_User(); var link = rep_download.Get_Download(); foreach (var links in link) { if (item.Product_ID == links.Download_Productid) { } else { <span>لینک ثبت نشده است</span> } } } </td> <td> @Html.ActionLink(" ", "AddLink", new { id = item.Product_ID }, new { @class = "fa fa-link", style = "color:green; font-size:19px;" }) </td> <td> @Html.ActionLink(" ", "", new { id = item.Product_ID }, new { @class = "fa fa-eye", style = "color:red; font-size:19px;", onclick = "return confirm('آیا از حذف این محصول مطمئا هستید؟');" }) </td> </tr> }
1 پاسخ
سلام،
این که تمام محصولات رو بخونی بعد بیای داخل View بر اساس کاربر لاگین شده اونارو نمایش بدی سربار بسیار زیادی روی منابع سخت افزاری شما خواهد داشت.
در سمت سرور باید اینکار را انجام داد.
1- گرفتن Id کاربر وارد شده.
اگه از Idnetity استفاده میکنی و یا سیستم Idnetity خودتون :
var userId = User.Identity.GetsUserId();
2- بعد روی جدول محصولات کوئری بزنید :
var userProducts = _context.Products.Where(x => x.UserId = userId).Select(x => new ProductViewModel { ... }).ToList();
پ.ن هدف از آمدن MVC جدا سازی و ایزوله کردن بخش های مهم نرم افزار از هم بود که نوشتن آزمون واحد را آسانتر میکرد، کاری که در WebForm اثری از آن نبود، شما هم کد های خواندن اطلاعات خود را به لایه Servives انتقال دهید، لایه ویو فقط برای نمایش داده و خروجی از آن استفاده می شود نه نمونه سازی از Repository.
موفق باشید.