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

آموزش کار با انتخاب کننده Selectors در MVC

آموزش کار با انتخاب کننده ها Selectors در MVC

انتخاب کننده متد (Action Selector) خاصیتی است که به متدهای اجرایی (action metod) اعمال شده و تعیین می کند چه متد اجرایی در جواب درخواست کاربر، انتخاب و اجرا شوند.
انتخاب کننده متد به سیستم مدیریت مسیر MVC یا routing engine کمک کرده تا متد صحیح را جهت مدیریت درخواست کاربر انتخاب کرده و اجرا نماید. این انتخاب کننده ها، نقشی حیاتی در هنگام نوشتن کد متدهای اجرایی، بازی می کند.
انتخاب کننده های متد، بر حسب نام هایی که در مقابل نام اولیه متد اجرایی می نویسید، رفتار متدهای اجرایی و نحوه فراخوانی و اجرای آن ها را کنترل می کنند. از این انتخاب کننده ها معمولا برای تعیین نام مستعار و دلخواه (alias) برای متدهای کنترلرها، استفاده می شود.
سه نوع خاصیت انتخاب کننده متد در MVC به شرح زیر وجود دارد :
  • انتخاب کننده نام متد یا ActionName
  • انتخاب کننده تهی یا NonAction
  • انتخاب کننده بر حسب نوع درخواست یا action Verbs

آموزش کار با انتخاب کننده Actionname در MVC

کلاس ActionName یک خاصیت یا attribute است که جهت تعیین یک نام دلخواه و مستعار، برای متد اجرایی استفاده می شود. انتخاب کننده ActionName به طراح سایت این امکان را می دهد تا از نامی دلخواه به جای نام اصلی متد، برای فراخوانی آن استفاده کند.
بیایید کد مثال عملی ساده با استفاده از کنترلر HomeController که دارای دو متد اجرایی است را جهت نمایش کاربرد ActionName بررسی کنیم :
syntax
کد
										using System;
using System.Collections.Generic;
using System.Linq;

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

namespace MVCFiltersDemo.Controllers {
   public class HomeController : Controller{
	  // GET: Home
	  public string Index(){
		 return "This is ASP.Net MVC Filters Tutorial";
	  } 
		
	  public string GetCurrentTime(){
		 return DateTime.Now.ToString("T");
	  }
   }
}
									
حال با استفاده از عبارت کلیدی [ActionName(“CurrentTime”)] در بالای نام متد GetCurrenttime()، یک انتخاب کننده ActionName را به این متد اعمال می کنیم، همانند کد زیر :
syntax
کد
										using System;
using System.Collections.Generic;
using System.Linq;

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

namespace MVCFiltersDemo.Controllers {
   public class HomeController : Controller{
	  // GET: Home
	  public string Index(){
		 return "This is ASP.Net MVC Filters Tutorial";
	  }
		
	  [ActionName("CurrentTime")]
	  public string GetCurrentTime(){
		 return DateTime.Now.ToString("T");
	  }
   }
}
									
اکنون پروژه را اجرا کرده و با وارد کردن آدرس +آدرس، خروجی زیر را دریافت خواهید کرد :
آموزش کار با انتخاب کننده Actionname در MVC
در مثال فوق دیدید که جهت فراخوانی متد GetCurrentTime از نام CurrentTime به جای نام اصلی متد استفاده کردیم.

آموزش کار با انتخاب کننده NonAction در MVC

انتخاب کننده NonAction، خاصیت درون ساخته دیگری در ASP.NET MVC است که تعین می کند یک action method در کنترلر، به عنوان متد اجرایی عمل نکرده و درواقع خودش خروجی مستقیم بر روی صفحه نداشته باشد.
از انتخاب کننده NonAction زمانی استفاده می شود که می خواهید یک متد اجرایی، به صورت مستقیم اجرا شود.
بیایید مطلب را در قالب مثال عملی و با اضافه کردن یک متد اجرایی (action method) به کنترلر HomeController که دارای خاصیت NonAction است، مشاهده کنیم :
syntax
کد
										using MVCFiltersDemo.ActionFilters;
using System;
using System.Collections.Generic;
using System.Linq;

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

namespace MVCFiltersDemo.Controllers {
   public class HomeController : Controller{
	  // GET: Home
	  public string Index(){
		 return "This is ASP.Net MVC Filters Tutorial";
	  }
		
	  [ActionName("CurrentTime")]
	  public string GetCurrentTime(){
		 return TimeString();
	  }
		
	  [NonAction]
	  public string TimeString(){
		 return "Time is " + DateTime.Now.ToString("T");
	  }
   }
}
									
متد جدید TimeString() که به کنترلر اضافه شده، از طریق متد GetCurrentTime() فراخوانی شده و نمی توانید آن را به صورت مستقیم از طریق URL فراخوانی کنید.
حال پروژه را اجرا کرده و آدرس +آدرس را در مرورگر وارد نمایید. خروجی زیر را مشاهده خواهید کرد :
آموزش کار با انتخاب کننده Actionname در MVC
حال اگر مقدار /TimeString را به صورت action در URL فوق وارد نمایید و با خطای زیر مواجه می شوید :
آموزش کار با انتخاب کننده Actionname در MVC
خواهید دید که به علت عدم امکان اجرای متد TimeString() به صورت مستقیم، برنامه خطای 404 یا Not Found را نمایش می دهد.

آموزش کار با انتخاب کننده ActionVerbs در MVC

فیلتر انتخاب کننده دیگذی که می توانید به متدهای اجرایی اعمال نمایید، خواص ActionVerbs هستند. این انتخاب کننده ها اجرا و فراخوانی یک متد خاص را محدود و به نوع HttpVerbs (یا نوع ارسال داده به متد) می کنند.
برای مثال می توانید دو متد اجرایی با نام یکسان را تعیین کرده، که یکی از action method ها به درخواست های نوع Http Get request پاسخ داده و متد دیگر به درخواست های نوع Http Post request پاسخ دهند.
فریم ورک MVC از خواص ActionVerbs زیر پشتیبانی می کند :
  • HttpGet
  • HttpPost
  • HttpPut
  • HttpDelete
  • HttpOptions
  • HttpPatch

برای درک بهتر، یک مثال عملی را با استفاده از کنترلر EmployeeController ایجاد می کنیم :
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 = “No name Entered”){
		 var input = Server.HtmlEncode(name);
		 return Content(input);
	  }
   }
}
									
حال بیایید یک متد اجرایی جدید، هم نام با متد موجود را مثل کد زیر به کنترلر اضافه کنیم :
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 Index()
	  //{
		 // return View();
	  //}
		
	  public ActionResult Search(string name){
		 var input = Server.HtmlEncode(name);
		 return Content(input);
	  }
		
	  public ActionResult Search(){
		 var input = "Another Search action";
		 return Content(input);
	  }
   }
}
									
حال اگر برنامه را اجرا نمایید، با یک خطا مواجه می شوید، زیرا چهارچوب کاری MVC قادر نیست تشخیص بدهد که برای اجرای درخواست شما، از کدام متد اجرایی (یکی از دو متد هم نام) استفاده کند.
حال برای action ای که می خواهید به درخواست کاربر پاسخ دهد، انتخاب کننده HttpGet ActionVerb مورد نظر را تعیین می کنیم :
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 Index()
	  //{
		 // return View();
	  //}
		
	  public ActionResult Search(string name){
		 var input = Server.HtmlEncode(name);
		 return Content(input);
	  }
		
	  [HttpGet]
	  public ActionResult Search(){
		 var input = "Another Search action";
		 return Content(input);
	  }
   }
}
									
اکنون که برنامه را اجرا کنید، متد (action) تعیین شده، اجرا خواهد شد و خروجی زیر را تولید می کند :
آموزش کار با انتخاب کننده Actionname در MVC
© Copyright 2007 - 2026 Developer 1 ®
Designed & Owned By Mehrdad Fattahi
Pishgaman Toseye Web Company
استفاده از مطالب سايت با ذکر آدرس کامل و نام سايت بلامانع است .
این سایت در سامانه وزارت فرهنگ و ارشاد اسلامی ثبت شده است .