علاوه بر Viewstart یک ViewImports فایل هم در این ورژن ASP.NET MVC بوجود آمده است و در هنگام Render شدن یک View ، MVC در صورت وجود این فایل ، از آن هم استفاده خواهد نمود.
بسمه تعالی
ASP.NET Core 1 – قسمت 30
علاوه بر Viewstart یک ViewImports فایل هم در این ورژن ASP.NET MVC بوجود آمده است و در هنگام Render شدن یک View ، MVC در صورت وجود این فایل ، از آن هم استفاده خواهد نمود. در ورژن قبلی MVC از XML File ها برای یکسری از تنظیمات View ها استفاده میشد ، ولی در این نسخه باید از کد نویسی بهره برد .مثلا اگر به یک یا چند NameSpace به صورت مرتب در چندین View نیاز داریم ، میتوان به جای تکرار آنها در همه View ها ، از این فابلیت جدید استفاده نمود .خوب حالا ببینیم چگونه میتوان از این قابلیت در جهت حذف بعضی از عبارات تکراری در View ها استفاده کرد .

مثلن در Create View یک عبارت Using داریم که اگر آنرا حذف کنیم با خطا روبرو خواهیم شد .

حالا فرض کنید این دستور Using در دهها View تکرار شده و بهتر است به شکل دیگری از یک یک آنها حذف و فقط از طریق یک آیتم به آنها معرفی شود . برای اینکار باید از ViewImports استفاده نمود.
بر روی فولر View کلیک راست کرده و باز هم یک Add New Item بزنید .

این نوع جدید که در تصویر مشخص است را انتخاب و با همین نام این Object جدید را ایجاد کنید .خوب حالا اگر عبارت Using را از Create View حذف و به این فایل منتقل کنم ، به هدف خود رسیده ام. پروژه را اجرا و از Create View با موفقیت استفاده کنید .
در ادامه به معرفی یکی از قابلیتهای جدید MVC Core 1 پرداخته که تا حدودی ViewImports هم در روند استفاده از آن نقش خواهد داشت . دقت کنید که این قابلیت بسیار مفید و کاربردی بوده و Microsoft و تیم MVC از حدود 1سال قبل مانور زیادی بر روی این توانمندی در جهت نزدیک شدن MVC و بخشهای آن با Pure Html داشته اند .
معرفی Tag Helpers و چگونگی استفاده از آن در MVC Core .
Tag Helper ها شباهت زیادی به Html Tag ها دارند. در خیلی از موارد میتوانید به جای HTML Helper از یک Tag Helper استفاده کنید و کلن در نتیجه برای شما HTML Tag تولید و در View شما Generate خواهد شد .علت ترجیح Tag Helper ها سبکتر بودن و نزدیک بودن آنها به HTML Tag ها میباشد .

الان در تصویر بالا به Label دقت کنید . این عبارت نفق LabelFor را HTML Helper ها دارد و مقدار Name را از طریق Model تشخیص داده و نمایش خواهد داد. دفت کنید که تا به امروز که من این مطلب را مینویسم ، ماکروسافت اجباری در استفاده از این آیتم نداشته و بعضی HTML Helper را ساده تر میدانند و بعضی Tag Helper ها را ترجیح داده و به دلیل نزدیکی به HTML آنرا خوانا تر میدانند .
برای استفاده از Tag Helper ها باید یک Library جدید از طریق Nuget نصب کنیم و پس از آن از این قابلیت در View ها استفاده کنیم .
ظاهرا دوباره باید به سراغ Project.Json رفته و یک Library جدید به آن اضافه کنیم. یک خط کد مطابق زیر در Dependency ها اضافه میکنیم .

حال باید Razor View اصلن جهت استفاده از Tag Helper ها تنظیم شوند. برای اینکار میشود یک به یک هر View را تنظیم یا از طریق _Layout و LayoutImports اینکار را انجام داد. در اینجا مطابق زیر فایل LayoutImports را اصلاح کنید .

حالا در Index View از این Tag Helper ها استفاده خواهیم کرد. در Index یک Helper داریم که یک ActionLink است و یک Link برای مراجعه به صفحه Details بر اساس ID تولید میکند .یک Link دیگر هم قصد دارم بسازم تا ما را به صفحه Create هدایت کند . برای ساخت Link مراجعه به صفحه Createمشابه زیر عمل کنید .
یک راه استفاده از HTML بدون دخالت هیچ آیتم اضافی است . مانند زیر.

یک راه هم استفاده از یک Tag Helper و آدرس دهی جهت تولید این Link خواهد بود.

خوب ببینید زیبا نیست ؟. عبارت اول نام Controller را مشخص کرد و بعدی نام Action را ولی هنوز در حال استفاده از یک A Tag میباشیم . حتی میتوانستم به دلیل کار در HomeController قسمت مشخص کردن Controller را هم ننویسم چون در صورت عدم مشخص شدن به سراغ Currect Controller خواهد رفت . این مدل از کدنویسی زیباتر و ساده تر است . اگر الان پروژه را اجرا کنید هم خواهید دید که یک Link ساده برای شما ایجاد شده است .
حالا به سراغ لینک بالایی که یک Action Link بود برویم .

خوب حالا دقت کنید ، نام Action را تایین کردم و پس از ان چون باید ID را مقدار دهی کنم توسط قسمت دوم در Route باید id را تعریف و مقدار دهی کنم. خط کد قبلی را هم Comment نمودم. این هم نتیجه پس از اجرا .

دقت کنید که تعداد Tag Helper ها بیشتر از این حرفهاست و در قسمتهای بعدی به بعضی دیگر اشاره خواهیم کرد . پس از اتمام کل این Course هم کم کم در مقالات پراکنده به آنها خواهیم پرداخت . دقت کنید حتی میتوانید از طریق Tag Helper ها Cache و زمان آنرا تایین کنید . برای Form هم Tag Helper داریم که در بخشهای بعدی از آن استفاده خواهیم نمود.
دانلود سورس پروژه