اگر به خروجی Action Method ها در Controller ها دقت کرده باشید ، انواع مختلفی از خروجیها وجود دارد ، ولی در عین حال اگر به این انواع دقت نکنید و خروجی همه را یک نوع عمومی و کلی مانند ActionResult یا در Core 1 به صورت IActionResult قرار دهید هم مشکل خاصی وجود ندارد.
بسمه تعالی
بررسی انواع Action Result در پروژه های ASP.NET MVC
اگر به خروجی Action Method ها در Controller ها دقت کرده باشید ، انواع مختلفی از خروجیها وجود دارد ، ولی در عین حال اگر به این انواع دقت نکنید و خروجی همه را یک نوع عمومی و کلی مانند ActionResult یا در Core 1 به صورت IActionResult قرار دهید هم مشکل خاصی وجود ندارد.
بله اگر نوع خروجی را همواره یک نوع کلی قرار دهید ، دیگر لازم نیست نگران نوع خروجی متد باشید ، ولی باید بدانید چه نوع خروجیهایی میتوان از یک Action Method گرفت تا بر اساس آن در پروژه های بزرگ بتوانید تصمیم گیری کنید . مثلن اگر به یک خروجی JSON نیاز داشته باشیم ، چه باید بکنیم؟.
در این مقاله خیلی سریع و اجمالی ، همه این مباحث را بررسی خواهیم نمود.
ابتدا اجازه دهید ببینیم آناتومی و کارکرد یک Action Method به چه صورت است .
مطابق تصویر بالا Controller یک درخواست را گرفته و بر اساس نوع Action Method یک خروجی به View ارسال میکند .
کلن Action Result به عنوان یک Abstract Class میتواند همه انواع خروجیهای یک Action Method را Support کند .
در این کلاس Abstract دو نوع متد مشابه تصویر زیر وجود دارد .
خوب حالا ببینیم چه انواعی را میتوان به عنوان خروجی یک Action Method قرار داد.هر کدام از انواع زیر یک موجودیت مجزا به View ارسال خواهد نمود.
- Redirect To Action Result
نوع ViewResult در اصل به این معنی است که اگر جایی خروجی ما یک View بود ، می توان به جای Action Result از ViewResult استفاده کرد .
حالا اگر نوع خروجی Action Method یک Partial View باشد چه ؟. در این حالت میتوان به شکل زیر عمل نمود .
در اینجا یک PartialView داریم که نام آن هم _PartialView است و به شکل بالا از آن میتوان استفاده نمود .
در مواردی Action Method باید ما را به آدرس دیگر Redirect نماید و آنجاست که به شکل زیر میتوان عمل نمود.
اگر آدرس لازمه غلط باید با خطای 404 روبرو خواهیم شد.
اگر لازم شد یک Action Method را در پایان کار یک متد دیگر صدا بزنیم ، باید به شکل زیر عمل کرد .
در این حالت دقیقن متد Login از Account Controller صدا زده خواهد شد . اگر اسم Controller را نیاورید ، Current Controller لحاظ خواهد شد و در صورت عدم وجود یا عدم صحت آدرسها باز هم پیام 404 خواهید داشت.
Jsron Result یکی از انواع بسیار کاربردی در خروجی Action Method هاست . یک نمونه از آنرا در زیر مشاهده میکنیم.
گاهی در حال گرفتن خروجی JSON به Maximum طول یک Json File نیاز داریم. اینجاست که باید درون Action میزان طول را روی Maximum این مقدار قرار دهیم.
در شرایطی هست که نیاز داریم یک فایل را در سطح یک View و در عمل در Browser نمایش دهیم . در این شرایط از خروجی فایل باید استفاده نمود . به شکل زیر دقت کنید.
اگر در Route های پروژه تغییر ایجاد کرده یا Route جدید تعریف کرده باشید ، میتوانید با RedirectToRoute در یک Action به آن Route منتقل شوید .مثلا اگر یک Route به نام MyRoute ایجاد شده باشد ، میتوان به شکل زیر به آن منتقل شد .
نوع دیگری وجود دارد به نام Content Result که به شکل زیر میتوان از آن بهره برداری کرد . حتی مثلن میتوان سبب اجرای یک دستور ساده JavaScript از طریق استفاده از این خروجی گردید.
همانطور که مشاهده می کنید در همه حالات خروجی متدها همان نوع کلی و عمومی ActionResult است ، ولی در بدنه متدها و در Return نوع مقادیری که ارسال میکنند بر اساس شرایط میتواند متفاوت باشد.