چهارشنبه , مهر ۶ ۱۴۰۱

Action در Asp.net mvc چیست؟

Action در Asp.net mvc چیست؟

 

آندسته از برنامه نویسانی که با Asp.net Mvc و یا Asp.net Core برنامه نویسی کرده اند مطمئنا نام Action را شنیده اند و با کاربردهای آن آشنا هستند. اما ما قصد داریم در این مقاله از وب سایت Aspcore.ir در مورد مفهوم Action و انواع آن و کاربردهای آن صحبت کنیم.

شما بعد از مطالعه این مقاله درک بهتری را از مفهوم اکشن و کاربردهای آن خواهید داشت. پس توصیه می کنیم حتما این مقاله را تا انتها مطالعه بفرمایید.

 

Action در Asp.net mvc چیست؟

 

همانطور که می دانید برنامه نویسی وب با الگوی Mvc شامل سه قسمت مجزا می باشد. بخش Model که همان کلاسها و Interface های مربوط به دیتابیس را شامل می شود. بخش Views که همان ویوها یا صفحات خروجی html می باشد و بخش Controller که منطق برنامه و کدهای اصلی در این بخش می باشد.

کدنویسی در کنترلرها در مدل Mvc از طریق اکشن ها انجام می شود. Action ها متدهایی هستند که دارای ویژگیهایی می باشند که در ادامه با مثال آنها را ذکر خواهیم کرد.

 

ویژگی اول : Action ها حتما از نوع Public هستند

 

همانطور که گفته شد Action ها متدهایی هستند که بایستی حتما از نوع Public باشند. در مثال زیر یک Action با نام Index را مشاهده می نمایید

 

action در asp mvc چیست

 

Action در Asp.net mvc

 

همانطور که ملاحظه می فرمایید در این مثال یک Action با نام Index را تعریف کرده ایم که Public نیز می باشد.

در بالای این اکشن دستوری به نام HttpGet وجود دارد که به این دستور ویژگی یا Attribute گفته می شود. در واقع این ویژگی به برنامه می گوید که این اکشن قرار است یک صفحه را نمایش دهد.

در مثال بالا یک Action بسیار ساده را تعریف کرده ایم اما در آن نکاتی وجود دارد که ذکر آنها خالی از لطف نیست.

 

  • نکته اول اینکه نوع این Action از نوع IActionResult می باشد. متدهایی از نوع IActionResult می توانند هر نوع خروجی را داشته باشند. به عبارتی خروجی این اکشن می تواند یک View باشد، می تواند یک عدد int باشد، می تواند یک string یا آرایه یا هر چیز دیگری باشد.
  • نکته دوم اینکه Action هایی با ویژگی HttpGet یک ویو را نمایش می دهند. اگر نام Action با نام View یکی باشد به صورت اتوماتیک ویو تشخیص داده می شود و نمایش داده می شود. در صورتی که نام ویو با نام Action متفاوت باشد باید در قسمت Return نام View نوشته شود. همان طور که ملاحظه می فرمایید در این مثال نام ویوی ما AspCore_View می باشد که چون با نام Action یکسان نیست به صورت یک آرگومان به View ارسال شده است.
  • به مثال زیر توجه نمایید :

 

action در mvc چیست

 

در مثال بالا دو اکشن به نام Create وجود دارد. نکته اول اینکه با وجود یکسان بودن نام این دو Action چون امضای این دو Action با یکدیگر متفاوت است (پارامترهای ورودی متفاوت است) خطایی وجود ندارد. نکته دوم اینکه یک اکشن ویژگی HttpGet و یک Action ویژگی HttpPost را در بالای خود دارد. اکشنی که ویژگی HttpGet را دارد برای نمایش صفحه ایجاد می باشد. و اکشن با ویژگی HttpPost برای ارسال اطلاعات به سمت سرور می باشد.

 

Action در Asp.net mvc

 

دقت نمایید شما در مدل Mvc برای انجام هر عملیاتی نیاز به تعریف یک Action دارید. در واقع اکشن ها فقط برای نمایش ویو و ارسال اطلاعات به سمت سرور نیستند.

 

در ادامه به صورت یک لیست برخی از خواص Action ها ذکر می کنیم :

 

  • متدهای Action حتما بایستی Public باشند و Private و Protected نمی توانند باشند.
  • اکشن ها قابلیت overload را ندارند. به این معنی که نمی توان مانند متغیرهای جنریک نوع آنها را هنگام استفاده کردن تغییر داد. مثلا اگر اکشنی با خروجی Json بود دیگر همیشه خروجی آن جیسون می باشد.
  • اکشن ها نمی توانند static باشند.
  • اکشن ها مانند متدهای معمولی می توانند دارای پارامتر باشند.
  • اکشن ها انواع مختلفی را می توانند داشته باشند که شامل موارد زیر می باشد :
    •  ViewResult : خروجی این نوع اکشن فقط ویو می باشد.
    • FileResult : اگر قرار است اکشن شما کار دانلود را انجام دهد باید نوع اکشن FileResult باشد.
    • JsonResult : اگر خروجی مورد نیاز شما جیسون می باشد از این نوع می توانید استفاده کنید.
    • ContentResult : اگر خروجی اکشن رشته باشد از این نوع می توان استفاده کرد.
    • RedirectResult : اگر اکشن شما وظیفه ارجاع به سایر اکشن ها را بر عهده دارد از این اکشن می توانید استفاده نمایید.
    • ActionResult :  این نمونه تمامی موارد بالا را شامل می شود.

 

 

کانال تلگرام ما

 

Action در Asp.net mvc

یک دیدگاه

  1. مطلب خوبی بود ممنونم دوست عزیز

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

code