• ASP.NET Core 1 – قسمت پانزدهم
ASP.NET Core 1 – قسمت پانزدهم
1395/02/02 - 10:30:54 // MVC 5 & 6 // 0 نظر // 399 بازدید

همانطور که تا به اینجا مشاهده فرموده اید ، تقریبا زمینه برای داشتن یک پروژه مبتنی بر Core 1 برای ما فراهم است . مباحث آموزش داده شده ، حداقل در حد ایجاد یک CRUD بوده و تسلط بر ایجاد یک CRUD مبتنی بر یک تکنولوژی برنامه نویسی ، در عمل یعنی 60% مشکلات شما در برنامه نویسی با آن زبان حل شده است.

بسمه تعالی

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

همانطور که تا به اینجا مشاهده فرموده اید ، تقریبا زمینه برای داشتن یک پروژه مبتنی بر Core 1 برای ما فراهم است . مباحث آموزش داده شده ، حداقل در حد ایجاد یک CRUD بوده و تسلط بر ایجاد یک CRUD مبتنی بر یک تکنولوژی برنامه نویسی ، در عمل یعنی 60% مشکلات شما در برنامه نویسی با آن زبان حل شده است. مشکلی که وجود دارد این است که شما هنوز با View و چگونگی Render کردن آن آشنایی ندارید و پیامها و ... از طریق Command ها درون Browser نمایش داده میشوند و شکل HTMLندارند.

در این بخش به بررسی چگونگی Render کردن View خواهیم پرداخت .

مطابق شکل زیر ، View ها که در اینجا Razor میباشد ، مبتنی بر روند زیر عمل خواهند نمود .

 
 
 
در این روند ، Controller بر اساس View Result هر ActionMethod به پروژه اعلام میکند که کدام فایل HTML باید فراخوانی شود . پس از آن View از طریق File System موجود در ASP.NET ، فایل HTML لازمه را یافته و آنرا Render خواهد نمود .

بریم ببینیم در پروژه ما این روند چگونه خواهد بود .

اگر وارد HomeController شویم و به جای Render کردن یک Object Result یک View Result را به عنوان خروجی Action Method قرار دهیم ، وضعیتی مشابه زیر خواهیم داشت.

 
 

خوب فایل را Save و پروژه را اجرا کنید تا پیام خطا نمایان شود .

 
 
 
وقتی خروجی متد را View قرار دهیم ، مسلما سیستم به دنبال یک View همنام Action متناظر خواهد گشت و وقتی آنرا پیدا نکند ، یا پیام خطا روبرو خواهیم شد .

در این مرحله برای رفع خطا باید یک CSHTML وجود داشته باشد تا مشکل برطرف کردد. در زبان C# خروجی Razor یا پسوند CSHTML خواهد بود . همانطور که در تصویر میبینید ، همه View ها در فولدری به نام View جستجو خواهند شد . بر اساس نام Action من ، سیستم به دنبال Index View در فولدر View و داخل آن در فولدر Home خواهد بود چرا که نام Controller ما در اینجا HomeController می باشد . اگر به تصویر بالا نگاه کنید ، به دلیل بررسی بعضی دیگر احتمالات ، سیستم درون Shared Folder را هم بررسی خواهد نمود و به دنبال فایل Index در آنجا هم خواهد بود .

کاری که الان باید انجام شود ، ایجاد یک Index View در محل صحیح آن است . پس از آن محتوای View را تصحیح کرده و پروژه را دنبال خواهیم کرد .

به پروژه یک فولدر جدید به نام Views اضافه کنید و برای داشتن یک Index View مختص HomeController ، درون این فولدر یک فولدر دیگر به نام Home ایجاد کنید . درون Home Folder یک Razor View مطابق تصویر زیر ایجاد کنید .

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

خوب در ابتدا محتوای Default درون فایل را حذف میکنیم . و از یک HTML Template خیلی اولیه استفاده خواهیم کرد .

 
 
 
برای ایجاد چنین محتوایی ، کافیست در View عبارت <HTML را تایپ کرده و یک TAB بزنید .خوب باید بدانید که هر محتوایی درون این HTML File ، مستقیما به کاربر نمایش داده خواهد شد .حالا چند تغییر ساده در این View ایجاد میکنیم .

 
 
 
خوب همین فایل را Save و پروژه را دوباره اجرا کنید . حالا میبینید که Index به دلیل تناظر با Index Action در پروزه نمایش داده خواهد شد .

 
 
 
 
 
اگر به HomeController برگردیم ، خواهید دید که OverLoad های دیگری برای خروجی View وجود دارد و میتوان از آنها هم برای داشتن اشکال دیگری از خروجیها استفاده نمود .

مثلن میتوان Index Action را به یک View دیگر منتقل کرد نه به View پیش فرض آن . اگر مطابق تصویر زیر عمل کنید به دلیل عدم وجود یک View به نام Home و اینکه Action Method به این View اشاره خواهد کرد ، باز با پیام خطا روبرو خواهیم شد .

 
 
 
 
 
 
 
 
 
حالا قصد داریم Model را هم به View پاس بدهیم . در اینجا باز پارامتر Home را حذف کردیم تا Model به همان Default View پاس داده شود . خوب حالا که Model را پاس دادیم ، باید بتوان از آن در View هم استفاده کرد . همانطور که میدانید ، علامت @ نقش به سزایی در Razor View ها دارد. برای استفاده از Model یک C# Expression استفاده میکنیم . یکی از مهمترین این عبارات @Model میباشد . طریقه استفاده در تصویر زیر مشهود است. به دلیل داشتن یک Property به نام Name در Model ، الان میتوان از Model.Name استفاده کرده و مقدار آنرا درون View استفاده کرد .

 
 
 
 
حال نتیجه را ببینید .

 
 
 
 
اگر مثلا الان DataBase هم در پروژه درکیر بود ، Model میتوانست مقادیر درون DB را به View پاس دهد .

تا اینجا در View و بر روی Model نتوانستیم Intellisense داشته باشیم و این چیزی است که ماکروسافت کارها مخصوصن دوست ندارند. میتوان این مشکل را به سادگی برطرف نمود . با استفاده از @model با M ولی نه با حروف بزرگ و معرفی model به View به شکل زیر ، میتوان از Property های Model در سطح View استفاده نمود .

 
 
 
در بخش بعدی باید با همین مباحث که در مورد آن صحبت شد ، مثلن لیست داده ها را داشته و کلن پروزه را به پیش بریم ، البته در حین اینکار با استاندارها و مباحث جدیدتر هم آشنا خواهیم شد .
 
 
 

موفق باشید .

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

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

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

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