Takip Edin

ASP.NET MVC

ASP.NET MVC’de Action Selector Özellikleri

asp.net mvc'de action selector özellikleri

Action selector, action metotlara uygulanabilen bir özelliktir. Yönlendirme motorunun belirli bir isteği işlemesi için doğru action metodunu seçmesine yardımcı olur. MVC 5, aşağıdaki action selector özelliklerini içermektedir:

  1. ActionName
  2. NonAction
  3. ActionVerbs

ActionName

ActionName özelliği, aşağıda gösterildiği gibi metot isminden farklı bir action ismi belirlememize olanak sağlar:

public class ProductController : Controller
{
    public ProductController()
    {
    }
       
    [ActionName("Find")]
    public ActionResult GetById(int id)
    {
        // Veritabanından product'ı al. 
        return View();
    }
}

Yukarıdaki örnekte, GetById() action metoduna ActionName(“Find”) özelliğini uyguladık. Bu özelliği uyguladıktan sonra action metodun ismi GetById yerine Find olacak, yani http://localhost/product/getbyid/1 isteği yerine http://localhost/product/find/1 isteği çağrılacaktır.

NonAction

NonAction özelliği, bir controller’da action metodu olarak davranmayan bir public metot oluşturmak istediğinizde kullanılmaktadır.

Aşağıdaki örnekte, Index() metodu bir action metottur ancak GetProduct(), bir action metot değildir.

public class ProductController : Controller
{
    public string Index()
    {
            return "Bu, ProductController'ın Index action metodudur.";
    }
   
    [NonAction]
    public Product GetProduct(int id)
    {
        return productList.Where(p => p.ProductId == id).FirstOrDefault();
    }
}

ActionVerbs

ActionVerbs selector, farklı tipte HTTP isteklerini işler. MVC çerçevesi; HttpGet, HttpPost, HttpPut, HttpDelete, HttpOptions ve HttpPatch action verbs’ünü içerir. Bir action metoduna farklı HTTP isteklerini işlemek için bir ya da daha fazla action verbs uygulayabilirsiniz. Eğer bir action metoduna herhangi bir action verbs uygulamazsanız varsayılan olarak HttpGet isteğini işleyecektir.

Aşağıdaki tablo, HTTP metotlarının kullanımını listelemektedir:

HTTP MetoduKullanımı
GETSunucudan bilgiyi almak için kullanılır. Parametreler sorgu dizesine eklenir.
POSTYeni bir kaynak oluşturmak için kullanılır.
PUT Varolan bir kaynağı güncellemek için kullanılır.
HEADSunucunun ileti metnini döndürmemesi dışında GET ile aynıdır.
OPTIONSWeb sunucusu tarafından desteklenen iletişim seçenekleri hakkında bir bilgi isteğini temsil eder.
DELETEVarolan bir kaynağı silmek için kullanılır.
PATCHKaynağı, kısmen ya da tamamen güncellemek için kullanılır.

HTTP metotları hakkında daha fazla bilgi için W3.org‘u ziyaret edebilirsiniz.

Aşağıdaki örnek, ActionVerbs’ü kullanarak Controller’da bulunan farklı türdeki HTTP isteklerinin nasıl işlendiğini göstermektedir:

public class ProductController : Controller
{
    public ActionResult Index() // Varsayılan olarak GET isteklerini işler.
    {
        return View();
    }

    [HttpPost]
    public ActionResult PostAction() // Varsayılan olarak POST isteklerini işler.
    {
        return View("Index");
    }


    [HttpPut]
    public ActionResult PutAction() // Varsayılan olarak PUT isteklerini işler.
    {
        return View("Index");
    }

    [HttpDelete]
    public ActionResult DeleteAction() // Varsayılan olarak DELETE isteklerini işler.
    {
        return View("Index");
    }

    [HttpHead]
    public ActionResult HeadAction() // Varsayılan olarak HEAD isteklerini işler.
    {
        return View("Index");
    }
       
    [HttpOptions]
    public ActionResult OptionsAction() // Varsayılan olarak OPTION isteklerini işler.
    {
        return View("Index");
    }
       
    [HttpPatch]
    public ActionResult PatchAction() // Varsayılan olarak PATCH isteklerini işler.
    {
        return View("Index");
    }
}

Ayrıca, aşağıda gösterildiği gibi AcceptVerbs özelliğini kullanarak birden fazla action verbs uygulayabilirsiniz:

[AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get)]
public ActionResult GetAndPostAction()
{
    return RedirectToAction("Index");
}
Devamını oku

Popüler

error: Content is protected !!