همانطور که تا به اینجا مشاهده فرموده اید ، تقریبا زمینه برای داشتن یک پروژه مبتنی بر 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 استفاده نمود .
در بخش بعدی باید با همین مباحث که در مورد آن صحبت شد ، مثلن لیست داده ها را داشته و کلن پروزه را به پیش بریم ، البته در حین اینکار با استاندارها و مباحث جدیدتر هم آشنا خواهیم شد .
موفق باشید .
علی کلاهدوزان