فروشگاه آنلاین با MVC بخش ششم

فروشگاه آنلاین با MVC بخش ششم :

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

برای دسترسی به اطلاعات دیتابیس ، می توان در اکشن مربوطه ، بطور مستقیم ، از StoreContext که در مقالات قبل نوشتیم ، استفاده کنیم . ولی ما در این مقاله قصد داریم برای تعامل با دیتابیس ، از سرویس استفاده کنیم . بنابراین در روت پروژه ، یک فولدر بنام Services بسازید و در آن یک کلاس بنام StoreService.cs ایجاد کنید .

دستورات زیر را در کلاس StoreService.cs می نویسیم :

public class StoreService

    {

        private readonly StoreContext _db;

public StoreService() : this(new StoreContext()){}

        public StoreService(StoreContext context)

        {

            _db = context;

        }

        public  IEnumerable<Category> GetCategories()

        {

            return _db.Categories.OrderBy(c => c.Name).ToArray();

        }

    }

توضیح : ابتدا از کلاس StoreContext یک شئ ساختیم و با پارامتر ورودی این کلاس آنرا مقداردهی می کنیم . سپس تابع GetCategories را برای دریافت فهرست محصولات از دیتابیس تعریف کرده ایم .

حال باید تغییراتی در StoreController ایجاد کنیم . دستورات زیر را به ابتدای کنترولر اضافه کنید :

private readonly StoreService _store;

public StoreController() : this(new StoreService()) { }

        public StoreController(StoreService service)

        {

            _store = service;

        }

در دستورات فوق ، از کلاس StoreService که قبلا نوشتیم یک شئ ساختیم و آنرا با پارامتر ورودی سازنده کنترولر مقداردهی کردیم .

اکشن Index را نیز بصورت زیر تغییر می دهیم :

public  ActionResult Index()

        {

            var categories = _store.GetCategories();

            return View(categories);

        }

با اجرای Index View از کنترولر Store ، خروجی زیر را مشاهده خواهیم کرد :

فهرست محصولات

نمایش محصولات یک فهرست :

برای اینکه با کلیک روی لینکهای تصویر فوق ، محصولات آن دسته نمایش داده شود ، تابعی بنام DisplayProductsOf در Service می نویسیم :

public IEnumerable<Product> DisplayProductsOf(string category)

        {

            return _db.Products.Where(p => p.Category.Name == category).OrderBy(p => p.Name).ToArray();

        }

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

حال نوبت آنست که اکشن Browse در StoreController را تکمیل کنیم :

public ActionResult Browse(string id)

        {

            var products = _store.DisplayProductsOf(id);

            if(!products.Any())

            {

                return HttpNotFound();

            }

            return View(products);

        }

در مقاله بعد ، Browse View را ایجاد خواهیم کرد و اکشن Details را تکمیل می کنیم . با ما باشید …surprise


تاریخ انتشار :۲ بهمن ۱۳۹۴



دیدگاه ها :