این قسمت آغاز یک نگاه عمیقتر به مباحثی است که در بخشهای قبلی به صورت یکدفعه ای به آنها پرداختیم و شاید بعضی قسمتها را به سرعت فقط پیاده سازی کردیم در حالی که درک درستی از آنها نداشتیم. در پایان این چند قسمت نگاه شما به Controller ، Routing ، Model و .... تغییر خواهد نمود.
بسمه تعالی
آموزش یک پروژه ASP.NET MVC 5 از ابتدا تا انتها – سیستم ویدئو کلوپ – بخش ششم
این قسمت آغاز یک نگاه عمیقتر به مباحثی است که در بخشهای قبلی به صورت یکدفعه ای به آنها پرداختیم و شاید بعضی قسمتها را به سرعت فقط پیاده سازی کردیم در حالی که درک درستی از آنها نداشتیم. در پایان این چند قسمت نگاه شما به Controller ، Routing ، Model و .... تغییر خواهد نمود.
پروژه با باز کنید و به درون MovieController بروید . یک Action Method به شکل زیر تا به اینجا در اختیار داریم.
خوب به تصویر بالا و خروجی ActionResult متعلق به Action Method دقت کنید. در عمل خروجی تمام Action Method ها میتواند ActionResult باشد چرا که یک Base Class برای خروجیهای این متدها میباشد.
یک سوال پیش می آید که چرا وقتی خروجی متد من View است ، خروجی متد باید ActionResult باشد ؟. به شکل زیر دقت کنید.
خوب به صورت دقیق مشخص کردیم چون خروجی متد یک View است ، پس میتوان ViewResult را انتخاب نمود. در اصل ActionResult یک حالت کلی و در بر گیرنده همه خروجیهای یک ActionMethod می باشد . پس چرا میتوان برای هر Action Method به صورت مشخص نوع خروجی خاص تایین کرد ؟.
پاسخ اینجاست که میتوان با ریز بین تر بودن یک Cast اضافی را کم نمود و ضمنن Unit Testing را هم ساده تر نمود. ضمنن با این شکل کد نویسی ، برنامه نویسان دیگر در تیم شما یا حتی خود شما 6 ماه بعد دقیقن متوجه می شوید که خروجی این متد یک View است و نیازی به خواندن کدها و بررسی خروجی نمی باشد.
حال بهتر است به جدول زیر دقت کنید .
خوب این جدول لیست همه خروجیهایی است که می توان برای یک ActionMethod در اختیار داشت. البته من در یک مقاله قبلا همه این خروجیها را توضیح داده ام ، ولی به خاطر حفظ جامعیت این سری مبحث ، مجددا نگاهی به آنها خواهیم انداخت.
به کد بر میگردیم و خروجی Action Method خود را عوض میکنیم.
خوب حالا با یک Ctrl+F5 پروژه را Run کنید و به آدرس /Movies/Random بروید.
نتیجه مطابق شکل بالا خواهد بود. نوع Content فقط یک String را نمایش میدهد .
اجازه بدهید یک نوع دیگر را هم بررسی کنیم. به تصویر زیر دقت کنید .
اینجا مقدار برگشتی را httpnotfound قرار دادیم و در صورت اجرا و مراجعه به آدرس /Movies/Randomعملن با پیام خطای 404 روبرو خواهیم شد . در بعضی شرایط که درون Action Method ها IF و شرایط خاص داریم ، می توان در بعضی شرایط این خطا را باز گرداند و جلوی ادامه روند کار را گرفت.
بد نیس Empty Result را هم ببینیم. مانند شکل زیر عمل کنید .
حالا با اجرای پروژه با یک صفحه خالی و در اصل همان Empty روبرو خواهید شد.
خوب بد نیس نوع دیگری که مهم هم هست را بررسی کنیم. اگر بخواهیم یک Action از یک Controller را در یک Action دیگر صدا بزنیم ، مشابه زیر باید عمل کرد.
خوب حالا هر بار با اجرای پروژه و رفتن به آدرس /Movies/Random به صفحه اصلی ارسال خواهیم شد چرا که Index Action Method از Home Controller را صدا زده میشود .
حال یک سوال ، اگر لازم شد به یک آدرس ولی با یک یا چند پارامتر مراجعه کنیم ، چه باید کرد ؟. به مثال زیر توجه کنید .
حالا با مراجعه به آدرس /Movies/Random باز هم به Index منتقل میشوید ، ولی پارامترهای ایجاد شده هم به شکل زیر به صورت QueryString برای شما وجود دارند.
خوب چند نوع خروجی دیگر هم داریم که باید در طول پروژه و ضمن ایجاد یکسری آیتمهای دیگر از آنها استفاده نمود.
در بخش بعدی به بررسی Action Parameters خواهیم پرداخت.
دانلود سورس پروژه