• ASP.NET Core 1 – قسمت شانزدهم
ASP.NET Core 1 – قسمت شانزدهم
1395/02/02 - 13:19:24 // MVC 5 & 6 // 0 نظر // 386 بازدید

در ادامه بخش قبلی ، یک لیست از رستورانها را نمایش داده و مراحل ایجاد پروزه را پیگیری میکنیم . در طول پروژه من باید لیست رستورانها را از DataBase صدا بزنم ، ولی هنوز به آن مرحله نرسیده ام برای همین فعلن باید یک لیست از داده ها ایجاد و از آن استفاده نمود .

بسمه تعالی

ASP.NET Core 1 قسمت شانزدهم

در ادامه بخش قبلی ، یک لیست از رستورانها را نمایش داده و مراحل ایجاد پروزه را پیگیری میکنیم . در طول پروژه من باید لیست رستورانها را از DataBase صدا بزنم ، ولی هنوز به آن مرحله نرسیده ام برای همین فعلن باید یک لیست از داده ها ایجاد و از آن استفاده نمود . فعلن قصد ایجاد یک سرویس فرضی بر روی دیتای فرضی را داشته تا بعدا بحث دیتابیس را هم به میان آوریم .

برای ادامه بحث باید به سراغ فولدر Service رفته و مراحل کار را پیگیری کنیم. یک Component ایجاد میکنیم تا بتوان از آن در Controller استفاده کنیم. یک کلاس جدید به نام RestaurantData ایجاد میکنیم . اینجا نیاز به پیاده سازی 2 اینترفیس به شکل زیر داریم . مواظب ایجاد شدن NameSpace ها متدهای Interface به درستی باشید .

دقت کنید تصویری که قرار داده شد مرحله سرویس است و پس از آن باید به سراغ Controller رفته و تغییرات لازم در آنرا ایجاد کنیم .

 
 
 
 
در Controller ما به دسترسی مستقیم به داده ها اعتقاد نداریم . فقط باید متد GetAll را صدا زده و از نتیجه آن استفاده نمود . در قسمتهای قبلی در Startup.cs سرویس Greeter را صدا زده و از آن Instant ایجاد نموده بودیم . مشابه این کار برای دیگر سرویسها هم باید ایجاد گردد تا بتوان در سطح پروژه از سرویسها بهره برد .

برای Register کردن این سرویس از AddScoped استفاده کردیم چرا که این متد برای هر یک Http Request یک Instant ایجاد کرده و میتوان از آن به ازای هر درخواست استفاده نمود . حالا وقت استفاده از سرویس در Controller می باشد .

 
 
 
در HomeController یک متد سازنده ایجاد کرده و مراحل را پیگیری میکنیم .

 
 
 
پروژه را ذخیره و اجرا کنید و باز هم پیام خطا بگیرید .

 
 
 
 
علت بروز این خطا این است که در View فقط منتظر داشتم یک رکورد هستیم ، ولی سرویس ما یک لیست داده را منتقل مینماید . برای حل این مشکل باید مشابه زیر عمل نمود .

تغییر Model در View به یک IEnumerAble و داشتن یک Loop در View مشکل را حل خواهد کرد . دقت کنید که Loop باید بر روی عبارت Model با M به صورت Capital قرار گیرد .

 
 
 
و این هم نتیجه :

 
 
 
در مورد Razor بعدن زیاد صحبت خواهیم کرد . این Loop فقط یکی از کوچکترین توانمندیهای Razor در تشخیص کدهای C# از HTML بود که مشاهده گردید. حالا دیگر شما توانسته اید یک لیست از داده را بدون ایجاد رکورد مستقیم در Controller و از طریق صدا زدن سرویس نمایش دهید و این یعنی نزدیک شدن به وضعیت داشتن دیتابیس و یک پروژه در وضعیت واقعی .

شما را به بررسی بخشهای بعدی دعوت میکنم که در آنها ریزتر عمل کرده و دیگر اجزای مورد نیاز پروژه را بررسی و آنها را ایجاد خواهیم نمود.

 

علی کلاهدوزان

موفق باشید .

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

سلام بر دوستان ،
شاید رایج است به عنوان پروفایل کاربر ، چند خطی راجع به خودم بنویسم ، ولی وضعیت کاری و سوابق من با یک جستجوی ساده در گوگل مشخص خواهد شد ، لذا سرتان را با مطالب بی مورد به درد نیاورم بهتر است . اگر نکته خاصی لازم بود بدانید در قسمت "ایلیا سافت در یک نگاه" به احتمال زیاد یافت خواهد شد . جزئیات بیشتر را سوال کنید ، آدرس ایمیل Ali@Kolahdoozan.com همیشه جوابگوی شماست .امیدوارم از مطالب سایت استفاده کرده باشید . شاد و پیروز باشید .

امتیاز به مطلب
           
نظرات کاربران
ارسال نظر