• بررسی انواع Action Result در پروژه های ASP.NET MVC
بررسی انواع Action Result در پروژه های ASP.NET MVC
1395/03/12 - 18:24:05 // MVC 5 & 6 // 2 نظر // 7381 بازدید

اگر به خروجی 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 ارسال خواهد نمود.

  • View Result
  • Partial View Result
  • Redirect Result
  • Redirect To Action Result
  • Redirect To Route Result
  • Json Result
  • File Result
  • Content 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 نوع مقادیری که ارسال میکنند بر اساس شرایط میتواند متفاوت باشد.

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

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

امتیاز به مطلب
           
نظرات کاربران
  • سعيد
    1395/03/13 - 11:58:06

    0
    0
    سلام؛ سايت شما فيد RSS براي پيگيري دارد؟
     
    -------------------------------------------------------------
     
    پاسخ :
    سلام ، خیر
    اما میتونید از طریق کانال تلگرام و همچنین گروه تلگرام بروز شدن سایت رو پیگیری کنین
     
    —---------------------------------
    لینک عضویت در گروه :
    https://telegram.me/joinchat/BzwhewbR4vNzakt6bxRtSQ

    https://telegram.me/iliasoft 
    💾 @iliasoft
    💾 www.iliasoft.ir
     
  • amir
    1395/03/25 - 10:22:57

    1
    0
    سلام خسته نباشید ، بابت آموزش های خوب و روانتون ازتون تشکر می کنم ، یک بحثی هست به عنوان async &await توی متد ها استفاده میشه فکر کنم بحث همروندی هست توی بعضی از ویدیو های خارجی می بینم که همیشه از این نوع استفاده می کنند میشه یک مقاله در این مورد بنویسید که به چه دلیلی استفاده و در کجا استفاده میشه؟ منتظر پاسختون هستم
     
    -----------------------------
     
    پاسخ : همین مباحث پروژه MVC را دنبال کنید ،به اونم میرسیم 
ارسال نظر