فروشگاه آنلاین با 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 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 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


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



دیدگاه ها :