خانه دانلود خبرنامه سفارش سایت درباره ما ارتباط با ما حمایت از ما تبلیغات

آموزش کار متد اجرایی MVC Action Method

آموزش کار با متدهای اجرایی Action Methods در MVC

متدهای اجرایی یا Action Methods در Asp.Net MVC، مسئول پردازش درخواست های کاربر (request) و تولید خروجی یا جواب (response) به آنها هستند.
به طور پیش فرض، متدهای اجرایی، خروجی خود را در قالب یک ActionResult بر می گردانند که معمولا برای تولید نما (View) به کار می روند.
نکته نکته :

متدها (Actions) رابطه ای یک به یک (one-to-one mapping) با درخواست های کاربر دارند. یعنی هر نوع درخواست کاربر، توسط یک متد اجرایی خاص، اجرا می شود.

برای مثال، کاربر ممکن است آدرس (URL) ای را در مرورگر وارد کرده، بر روی یک لینک کلیک نموده، یک فرم را Submit کند و .... هریک از اعمال فوق، باعث ایجاد یک درخواست (request) و ارسال آن به سرور می شوند. در هر یک از این درخواست ها، اطلاعاتی وجود دارد که چهارچوب کاری MVC از انها، برای فراخوانی و اجرای یک متد هدف، استفاده می کند.
راهنمایی راهنمایی مهم 1 :

محدودیت عمده ای که در مورد متدهای اجرایی (Action Methods) وجود دارد، این است که آنها بایستی یک نمونه از یک کلاس مادر (stanre method) بوده و نمی توانند متد مستقل (static method) باشند. در ادامه به بررسی انواع کلاس های اصلی، برای تولید متدهای مختلف خواهیم پرداخت.


راهنمایی راهنمایی مهم 2 :

در تعیین مقدار برگشتی متدهای اجرایی (return value)، محدودیتی وجود نداشته و می توانند انواع داده ای متنی (string)، عددی (integer) و ... را برگردانده و یا اصلا خروجی نداشته باشند (void).


بررسی مسیر پردازش درخواست (request) در MVC

متدهای اجرایی (action methods)، مقصد نهایی درخواست ها (request) در برنامه های تحت وب MVC بوده و از کلاس پایه Controller استفاده می کنند.
در این بخش بیایید نگاهی به نحوه و مسیر پردازش درخواست های کاربر (request) در ASP.Net MVC بپردازیم :
  • هنگامی که یک درخواست با مسیر (URL) مثل /Home/Index/ به سرور می رسد، این ماژول UrlRoutingModule است که متوجه شده و تشخیص می دهد، کدام الگوی مسیر تعیین شده (route) در جدول مسیرها، بایستی به درخواست رسیدگی کند.
بررسی مسیر پردازش درخواست (request) در MVC
  • ماژول UrlRoutingModule، اطلاعاتی که در جدول مسیردهی (Route Table) تعیین کرده ایم را جمع آوری کرده و کنترلر پروسه را به MVC Route Handler انتقال می دهد.
  • ماژول MVC Route Handler، کنترلر (Controller) مناسب را تشخیص داده و پروسه را به MVC Handler که یک مدیریت کننده درخواست های HTTP است، انتقال می دهد.
  • ماژول MVC Handler به اطلاعات فایل RouteData رجوع کرده و کنترلر مناسب جهت پردازش درخواست را انتخاب می کند. سپس توسط Controller Factory، یک نسخه از کنترلر هدف را ایجاد و مقداردهی کرده و عملیات اجرای درخواست را به آن محول می کند.
  • پس از تعیین کنترلر مورد نظر، MVC Handler از طریق رابط کاربری IController Interface دستور اجرای کنترلر را می دهد.
  • در هنگام ایجاد و اجرای کنترلر جدید، کنترلر از کلاس پایه Controller ساخته می شود. متد اجراکننده یک تحریک کننده متد اجرایی یا action invoker تولید می کند که action مناسب و مورد نظر را تعیین و اجرا می کند.
  • در پایان action invoker مجددا اطلاعات فایل Route Data را چک کرده و اگر action، دارای پارامتری باشد، مقادیر آن را دریافت و به اکشن ارسال می کند.

بررسی انواع متدهای اجرایی action Method در MVC

متدهای اجرایی (action)، انواع مختلفی از نتایج خروجی (action result) را بر می گردانند. کلاس Action Result ، کلاس پایه برای تمامی این خروجی ها یا action result ها هستند. در جدول زیر، به تشریح انواع مختلف Action result ها و عملکرد آنها پرداخته ایم :
پارامتر توضیح
ContentResult این action یک مقدار متنی String را به عنوان خروجی بر می گرداند.
FileContentResult این action، محتویات یک فایل را به عنوان خروجی بر می گرداند.
FilePathResult این action، محتویات و مسیر یک فایل را به عنوان خروجی بر می گرداند.
FileStreamResult این action نیز محتویات یک فایل را به عنوان خروجی بر می گرداند.
EmptyResult این action، هیچ خروجی بر نمی گرداند و حالت void دارد.
JavaScriptResult این action، یک اسکریپت را جهت اجرا بر می گردند.
JsonResult این action، اطلاعات را در قالب فرمت JSON ارسال می کند.
RedirectToResult این action، برنامه را به یک آدرس URL خاص هدایت می کند.
HttpUnauthorizedResult این action، خطای 405 یک دسترسی غیر مجاز (Forbidden) را به کلاینت بر می گرداند.
RedirectToRouteResult این action، اجرای برنامه را به یک action یا یک کنترلر دیگر انتقال می دهد.
ViewResult این action، یک View را جهت اجرا به View engne می فرستد.
PartialViewResult این action، یک Partial View که یک صفحه (View) کامل نیست و درواقع بخشی از یک صفحه است را به موتور View Engine ارسال می کند.

مثال عملی :

حال بیایید مجددا نگاهی به کد فایل مثالی که در بخش قبل استفاده کردیم، بیاندازیم. در کد فایل زیر یک کنترلر به نام EmployeeController ایجاد کردیم که دارای یک متد اجرایی به نام Search است :
syntax
کد
                                        using System;
using System.Collections.Generic;
using System.Linq;

using System.Web;
using System.Web.Mvc;

namespace MVCControllerDemo.Controllers {
   public class EmployeeController : Controller{
      // GET: Employee
      public ActionResult Search(string name){
         var input = Server.HtmlEncode(name);
         return Content(input);
      }
   }
}
                                    
در صورت درخواست آدرس +آدرس، خروجی زیر را در صفحه مشاهده می کنید :
بررسی مسیر پردازش درخواست (request) در MVC
توضیح : در آدرس URL فوق، کنترلر Employee را فراخوانی کردیم که فقط یک متد اجرایی به نام Search دارد. پارامتر Mark، در انتهای آدرس، به عنوان یک داده به پارامتر String name متد Search ارسال شده و بر روی صفحه نمایش داده می شود.

مثال های دیگر برای کار با کنترلر ها و متدهای اجرایی

حال بیایید کنترلر دیگری را به پروژه اضافه کنیم :
1 مرحله: بر روی پوشه Controllers در منوی Solution Explorer کلیک راست کرده و گزینه های Add و سپس Controller را کلیک کنید :
مثال های دیگر برای کار با کنترلر ها و متدهای اجرایی
2 مرحله: کادر Scaffold به صورت زیر باز می شود :
مثال های دیگر برای کار با کنترلر ها و متدهای اجرایی
3 مرحله: گزینه “MVC 5 Controller-Empty” را انتخاب کرده و دکمه Add را بزنید. پنجره Add Controller به صورت زیر باز می شود :
مثال های دیگر برای کار با کنترلر ها و متدهای اجرایی
4 مرحله: نام کنترلر را CustomController تعیین کرده و دکمه “Add” را بزنید.
حال می توانید فایل جدید “CustomerController.cs” که به زبان سی شارپ است را در پوشه Controllers Folder مشاهده کرده و ویژوال استودیو، آن را به صورت زیر جهت ویرایش باز خواهد کرد :
مثال های دیگر برای کار با کنترلر ها و متدهای اجرایی
مشابه روش فوق، کنترلر دیگری به نام HomeController را به پروژه اضافه کنید. کد این فایل به صورت زیر خواهد بود :
syntax
کد
                                        using System;
using System.Collections.Generic;
using System.Linq;

using System.Web;
using System.Web.Mvc;

namespace MVCControllerDemo.Controllers {
   public class HomeController : Controller{
      // GET: Home
      public string Index(){
         return "This is Home Controller";
      }
   }
}
                                    
5 مرحله: برنامه را اجرا کرده و خروجی زیر را مشاهده خواهید کرد :
syntax
کد
                                        public string GetAllCustomers(){
   return @"< ul>
      < li> Ali Raza</li>
      < li> Mark Upston</li>
      < li> Allan Bommer</li>
      < li> Greg Jerry</li>
   </ul>";
}
                                    
مثال های دیگر برای کار با کنترلر ها و متدهای اجرایی
6 مرحله: کد زیر را به کنترلر Customer که در مراحل قبل ایجاد کردیم اضافه کنید.
مثال های دیگر برای کار با کنترلر ها و متدهای اجرایی
7 مرحله: مجددا برنامه را اجرا کرده و آدرس +آدرس را فراخوانی کنید. با آدرس فوق، متد GetAllCustomers() کنترلر Customer اجرا می شود :
مثال های دیگر برای کار با کنترلر ها و متدهای اجرایی
همچنین می توانید صفحه را به متد اجرایی دیگر در همان کنترلر و یا حتی کنترلر دیگری، انتقال (redirect) کنید.
در کد مثال عملی زیر، با تغییر کد کنترلر HomeController به صورت زیر، اجرای برنامه را از کنترلر Customer Controller به کنترلر HomeController انتقال (redirect) داده ایم :
syntax
کد
                                        using System;
using System.Collections.Generic;
using System.Linq;

using System.Web;
using System.Web.Mvc;

namespace MVCControllerDemo.Controllers{
   public class HomeController : Controller{
      // GET: Home
      public ActionResult Index(){
         return RedirectToAction("GetAllCustomers","Customer");
      }
   }
}
                                    
نکته نکته :

همانطور که مشاهده می کنید، ما از متد Redirect To action() که دو پارامتر نام متد اجرایی (action name) و نام کنترلر (Controller name) را دریافت می کند، استفاده کرده ایم.

مثال های دیگر برای کار با کنترلر ها و متدهای اجرایی
© Copyright 2007 - 2026 Developer 1 ®
Designed & Owned By Mehrdad Fattahi
Pishgaman Toseye Web Company
استفاده از مطالب سايت با ذکر آدرس کامل و نام سايت بلامانع است .
این سایت در سامانه وزارت فرهنگ و ارشاد اسلامی ثبت شده است .