Takip Edin

ASP.NET MVC

Controller Sınıfının Action Metodu

Controller sınıfının action metodu - öne çıkan görsel

Controller sınıfının tüm public metotları Action metotlar olarak adlandırılır. Action metotlar, aşağıdaki kısıtlamalarla diğer normal metotlar gibidir:

  1. Action metodu public olmalıdır, private ya da protected olamaz.
  2. Action metot, aşırı yüklenemez.
  3. Action metodu, statik bir metot olamaz.

Aşağıda, ProductController sınıfındaki Index() action metodu gösterilmektedir:

ProductController - Index() Action Metodu
Şekil 1: Action Metodu

Yukarıdaki şekilde görüldüğü gibi, Index() metodu public’tir ve View() metodunu kullanarak ActionResult‘u geriye döndürür. View() metodu, uygun ActionResult’u döndüren Controller base sınıfında tanımlıdır.

Varsayılan Action Metodu

Her controller, RouteConfig.cs sınıfındaki yapılandırılmış yola göre varsayılan bir action metoduna sahip olabilir. Aşağıda gösterildiği gibi, Index() metodu herhangi bir controller için varsayılan action metodudur.

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

Bununla birlikte, RouteConfig sınıfındaki gereksiniminize göre varsayılan action adını değiştirebilirsiniz.

ActionResult

MVC çerçevesi, bir Action metodundan geriye döndürülebilen çeşitli Result sınıfları içerir. Result sınıfları; HTML, javascript, JSON, string gibi farklı yanıt türlerini temsil etmektedir. Aşağıdaki tablo, ASP.NET MVC’de bulunan result sınıflarını listelemektedir:

Result SınıfıAçıklama
ViewResultHTML ve biçimlendirmeyi temsil eder.
EmptyResultHiçbir yanıt döndürmez.
ContentResultHarflerden oluşan diziyi temsil eder.
FileContentResult/FilePathResult/FileStreamResultBir dosyanın içeriğini temsil eder.
JavaScriptResultJavaScript kodunu temsil eder.
JsonResultAJAX’ta kullanılabilen JSON’u temsil eder.
RedirectResultYeni bir URL’ye yönlendirmeyi temsil eder.
RedirectToRouteResultAynı ya da farklı bir controller’ın başka bir action’ını temsil eder.
PartialViewResultPartial view’den HTML döndürür.
HttpUnauthorizedResultHTTP 403 durumunu döndürür.

ActionResult sınıfı, yukarıdaki tüm Result sınıflarının base sınıfıdır, bu yüzden yukarıda listelenen herhangi bir result’ı geriye döndüren action metodun geri dönüş tipi olabilir. Bununla birlikte, uygun bir result sınıfını action metodun geri dönüş tipi olarak belirtebilirsiniz.

Şekil 1’deki ProductController‘ın Index() metodu bir ViewResult(ActionResult sınıfından türetilen) döndürmek için View() metodunu kullanır. Aşağıdaki tabloda gösterildiği gibi base Controller sınıfı, belirli bir result türü döndüren diğer metotlarla birlikte View() metodunu da içermektedir:

Result SınıfıAçıklamaBase Controller Metodu
ViewResultHTML ve biçimlendirmeyi temsil eder.View()
EmptyResultHiçbir yanıt döndürmez.
ContentResultHarflerden oluşan diziyi temsil eder.Content()
FileContentResult, FilePathResult, FileStreamResultBir dosyanın içeriğini temsil eder.File()
JavaScriptResultJavaScript kodunu temsil eder.JavaScript()
JsonResultAJAX’ta kullanılabilen JSON’u temsil eder.Json()
RedirectResultYeni bir URL’ye yönlendirmeyi temsil eder.Redirect()
RedirectToRouteResultAynı ya da farklı bir controller’ın başka bir action’ını temsil eder.RedirectToRoute()
PartialViewResultPartial view’den HTML döndürür.PartialView()
HttpUnauthorizedResultHTTP 403 durumunu döndürür.

Bir action metottan geriye farklı türde bir result döndürmek için yukarıdaki tabloda belirtilen metotları kullanabilirsiniz.

Action Metot Parametreleri

Her action metodu, normal metotlar gibi giriş parametrelerine sahip olabilir. Bu parametreler, aşağıda gösterildiği gibi primitive veri tipinde ya da complex tipte parametreler olabilir:

[HttpPost]
public ActionResult Edit(Product prd)
{
    // Veritabanına product'ı güncelle.
    
    return RedirectToAction("Index");
}

[HttpDelete]
public ActionResult Delete(int id)
{
    // Veritabanından id'si, belirtilen id ile eşleşen product'ı sil.

    return RedirectToAction("Index");
}

Action method parametresinin nullable tipte olabileceğini unutmayın!

Action metot parametreleri için değerler, varsayılan olarak isteğin data collection’ından alınır. Data collection; form verileri, sorgu dizesi değerleri ya da çerez değerleri için isim/değer çiftleri içerir. ASP.NET MVC’de model binding; URL sorgu dizesini ya da form data collection’ını, action metot parametrelerine her iki isim de eşleştiği takdirde otomatik olarak eşler.

Hatırlanması Gereken Noktalar
1. Controller sınıfındaki tüm public metotlar, Action metotlar olarak adlandırılır.
2. Action metodu, aşağıdaki kısıtlamalara sahiptir:
=> Action metodu public olmalıdır, private ya da protected olamaz.
=> Action metodu, aşırı yüklenmiş olamaz.
=> Action metodu, statik bir metot olamaz.
3. ActionResult, Action metottan geriye dönen tüm result türlerinin base sınıfıdır.
4. base Controller sınıfı; uygun result türünü döndüren View(), File(), JavaScript(), Content() gibi metotlar içerir.
5. Action metodu, nullable tipte parametreler içerebilir.
Devamını oku

Popüler

error: Content is protected !!