کار با Action Method ها در ASP.NET MVC

در این مقاله به بخش اصلی کنترلر mvc که همان action method ها هستند خواهیم پرداخت. به کمک همین action method هاست که میتوانیم به Request ها پاسخ دهیم. در ادامه با انواع مختلف خروجی یک action method آشنا خواهیم شد .

مقالات مرتبط

در این مقاله به بخش اصلی کنترلر mvc که همان action method ها هستند خواهیم پرداخت. به کمک همین action method هاست که میتوانیم به Request ها پاسخ دهیم. در ادامه با انواع مختلف خروجی یک action method آشنا خواهیم شد .

در مقاله قبلی خواندیم که هر کنترلر شامل چندین متد public است که هر متد یک action ارائه میدهد که قرار است کنترلر بر روی مدل اجرا کند. این متد ها به اکشن متد معروف هستند. هر action method در کنترلر با یک URL مرتبط است. وقتی کنترلر ،درخواستی برای آن URL خاص دریافت میکند، Action متناسب با آن را اجرا کرده و view انتخابی را رندر کرده و به بروزر برمیگرداند.

ساده ترین مقدار برگشتی یک اکشن متد میتواند یک string ساده باشد. بعنوان مثال میتوانیم متد Time() زیر را به مثال خود اضافه کنیم:

برگشت این string از اکشن متد به mvc اعلام میکند که گام بعدی فقط فرستادن این string به بروزر است بدون اضافه کردن هیچ تگ Html اضافی.

حال برنامه را اجرا کنید و بعد از شماره پورت تایپ کنید : /Home/Time یعنی چیزی شبیه این http://localhost:60258/Home/Time

action-result

پرواضح است که برگرداندن یک string ساده ، چندان کاربردی نیست. قدرت واقعی mvc در خروجی Action Result object های آن است. همان Object ای که در مثال اول این مقاله از آن استفاده کردیم:

متد view() که ما در این اکشن متد استفاده کردیم ، به mvc اعلام میکند که باید یک view را رندر کند. متد View یک ViewResult Object برمیگرداند ک در واقع از همان ActionResult مشتق شده است. یعنی اگر ما به جای تابع Index قبلی از تابع زیر استفاده کنیم، تفاوتی در نتیجه خروجی نخواهیم داشت:

مهم ترین فعالیت یک اکشن متد این است که view را رندر و Html مورد نظر را تولید کند. همانطور که اشاره شد متد View() بهترین روش برای رندر کردن View است. این متد چندین overload دارد، ساده ترین آن بدون پارامتر است.

البته ما میتوانیم نام view ای که قرار است رندر شود هم به عنوان پارامتر به متد View بدهیم:

یا به view ای که قرار است رندر شود، داده بفرستیم: برای تست این عملکرد بهتر است ابتدا داده خود را از طریق کلاس model فراهم کنیم: در پوشه مدل خود کلاس زیر را اضافه کنید:

حال میتوان یک نمونه از این object را در متد Index ایجاد کرده و سپس به view متناظر با آن ارسال می‌کنیم

در موارد خاص میتوان علاوه بر data موردنظر ، اسم view ای که قرار است رندر شود هم به عنوان پارامتر ارسال کنیم:

Redirection

استفاده دیگری که از کلاس actionResult برای ارائه خروجی استفاده میشود ، در زمینه Redirection است.

برای redirect به متد دیگری در کنترلر مشابه از متد زیر استفاده میکنیم:

یا برای رفتن به متد دیگر در کنترلر دیگر خواهیم نوشت:

برای redirect به یک literal URL خواهیم نوشت:

برای ارسال error به بروزر