ASP.NET MVC Denetleyicisine Genel Bakış (VB)

tarafından Stephen Walther

Bu öğreticide Stephen Walther size ASP.NET MVC denetleyicilerini tanıtır. Yeni denetleyiciler oluşturmayı ve farklı eylem sonuçları türlerini döndürmeyi öğrenirsiniz.

Bu öğreticide ASP.NET MVC denetleyicileri, denetleyici eylemleri ve eylem sonuçları konusu inceılmaktadır. Bu öğreticiyi tamamladıktan sonra, bir ziyaretçinin ASP.NET MVC web sitesiyle etkileşim kurma şeklini denetlemek için denetleyicilerin nasıl kullanıldığını anlayacaksınız.

Denetleyicileri Anlama

MVC denetleyicileri, bir ASP.NET MVC web sitesinde yapılan isteklere yanıt vermekten sorumludur. Her tarayıcı isteği belirli bir denetleyiciye eşlenir. Örneğin, tarayıcınızın adres çubuğuna aşağıdaki URL'yi girdiğinizi düşünün:

http://localhost/Product/Index/3

Bu durumda ProductController adlı bir denetleyici çağrılır. ProductController, tarayıcı isteğine yanıt oluşturmakla sorumludur. Örneğin, denetleyici belirli bir görünümü tarayıcıya geri döndürebilir veya denetleyici kullanıcıyı başka bir denetleyiciye yönlendirebilir.

Liste 1, ProductController adlı basit bir denetleyici içerir.

Listing1 - Controllers\ProductController.vb

Public Class ProductController
    Inherits System.Web.Mvc.Controller

    '
    ' GET: /Products/

    Function Index()
        ' Add action logic here
        Return View()
    End Function

End Class

Liste 1'de görebileceğiniz gibi denetleyici yalnızca bir sınıftır (Visual Basic .NET veya C# sınıfı). Denetleyici, temel System.Web.Mvc.Controller sınıfından türetilen bir sınıftır. Denetleyici bu temel sınıftan devraldığından, denetleyici birkaç yararlı yöntemi ücretsiz devralır (Bu yöntemleri birazdan ele alıyoruz).

Denetleyici Eylemlerini Anlama

Denetleyici, denetleyici eylemlerini kullanıma sunar. Eylem, tarayıcı adres çubuğuna belirli bir URL girdiğinizde çağrılan bir denetleyici yöntemidir. Örneğin, aşağıdaki URL için bir istekte bulunduğunu düşünün:

http://localhost/Product/Index/3

Bu durumda, Index() yöntemi ProductController sınıfında çağrılır. Index() yöntemi bir denetleyici eylemi örneğidir.

Denetleyici eylemi, denetleyici sınıfının genel bir yöntemi olmalıdır. Visual Basic.NET yöntemleri varsayılan olarak genel yöntemlerdir. Denetleyici sınıfına eklediğiniz tüm genel yöntemlerin otomatik olarak denetleyici eylemi olarak kullanıma sunulduğunun farkında olun (Bir denetleyici eylemi yalnızca tarayıcı adres çubuğuna doğru URL'yi yazarak evrendeki herkes tarafından çağrılabildiği için bu konuda dikkatli olmanız gerekir).

Denetleyici eylemi tarafından karşılanması gereken bazı ek gereksinimler vardır. Denetleyici eylemi olarak kullanılan bir yöntem aşırı yüklenemez. Ayrıca, denetleyici eylemi statik bir yöntem olamaz. Bunun dışında, denetleyici eylemi olarak hemen her yöntemi kullanabilirsiniz.

Eylem Sonuçlarını Anlama

Denetleyici eylemi, eylem sonucu olarak adlandırılan bir şey döndürür. Eylem sonucu, bir denetleyici eyleminin tarayıcı isteğine yanıt olarak döndürdüğü sonuçdur.

ASP.NET MVC çerçevesi aşağıdakiler gibi çeşitli eylem sonuçlarını destekler:

  1. ViewResult - HTML ve işaretlemeyi temsil eder.
  2. EmptyResult - Hiçbir sonucu temsil eder.
  3. RedirectResult - Yeni bir URL'ye yeniden yönlendirmeyi temsil eder.
  4. JsonResult - AJAX uygulamasında kullanılabilecek bir JavaScript Nesne Gösterimi sonucunu temsil eder.
  5. JavaScriptResult - JavaScript betiğini temsil eder.
  6. ContentResult - Bir metin sonucunu temsil eder.
  7. FileContentResult - İndirilebilir bir dosyayı (ikili içerikle) temsil eder.
  8. FilePathResult - İndirilebilir bir dosyayı (yolu olan) temsil eder.
  9. FileStreamResult - İndirilebilir bir dosyayı (dosya akışıyla) temsil eder.

Bu eylem sonuçlarının tümü temel ActionResult sınıfından devralınır.

Çoğu durumda, denetleyici eylemi bir ViewResult döndürür. Örneğin, Liste 2'deki Dizin denetleyicisi eylemi bir ViewResult döndürür.

Liste 2 - Controllers\BookController.vb

Public Class BookController
    Inherits System.Web.Mvc.Controller

    Function Index()
        Return View()
    End Function

End Class

Bir eylem ViewResult döndürdüğünde, HTML tarayıcıya döndürülür. Listeleme 2'deki Index() yöntemi, tarayıcıya Index adlı bir görünüm döndürür.

Liste 2'deki Index() eyleminin ViewResult() döndürmediğini göreceksiniz. Bunun yerine, Denetleyici temel sınıfının View() yöntemi çağrılır. Normalde, doğrudan bir eylem sonucu döndürmezsiniz. Bunun yerine, Denetleyici temel sınıfının aşağıdaki yöntemlerinden birini çağırırsınız:

  1. Görünüm - Bir ViewResult eylem sonucu döndürür.
  2. Redirect - RedirectResult eylem sonucunu döndürür.
  3. RedirectToAction - RedirectToRouteResult eylem sonucunu döndürür.
  4. RedirectToRoute - RedirectToRouteResult eylem sonucunu döndürür.
  5. Json - Bir JsonResult eylem sonucu döndürür.
  6. JavaScriptResult - JavaScriptResult döndürür.
  7. İçerik - ContentResult eylem sonucunu döndürür.
  8. File - Yöntemine geçirilen parametrelere bağlı olarak fileContentResult, FilePathResult veya FileStreamResult döndürür.

Bu nedenle, tarayıcıya bir Görünüm döndürmek istiyorsanız View() yöntemini çağırırsınız. Kullanıcıyı bir denetleyici eyleminden diğerine yeniden yönlendirmek istiyorsanız RedirectToAction() yöntemini çağırırsınız. Örneğin, Liste 3'teki Details() eylemi bir görünüm görüntüler veya id parametresinin bir değeri olup olmadığına bağlı olarak kullanıcıyı Index() eylemine yönlendirir.

Listeleme 3 - CustomerController.vb

Public Class CustomerController
    Inherits System.Web.Mvc.Controller

    Function Details(ByVal id As Integer?)
        If Not id.HasValue Then
            Return RedirectToAction("Index")
        End If

        Return View()
    End Function
    Function Index()
        Return View()
    End Function

End Class

ContentResult eylem sonucu özeldir. Bir eylem sonucunu düz metin olarak döndürmek için ContentResult eylem sonucunu kullanabilirsiniz. Örneğin, Listeleme 4'teki Index() yöntemi bir iletiyi HTML olarak değil düz metin olarak döndürür.

Listeleme 4 - Controllers\StatusController.vb

StatusController

System.Web.Mvc.Controller

Public Class StatusController
    Inherits System.Web.Mvc.Controller

    Function Index()
        Return Content("Hello World!")
    End Function

End Class

StatusController.Index() eylemi çağrıldığında bir görünüm döndürülmüyor. Bunun yerine, "Merhaba Dünya!" ham metni tarayıcıya döndürülür.

Denetleyici eylemi, eylem sonucu olmayan bir sonuç döndürürse (örneğin, tarih veya tamsayı) sonuç otomatik olarak ContentResult içine sarmalanır. Örneğin, Liste 5'teki WorkController'ın Index() eylemi çağrıldığında, tarih otomatik olarak ContentResult olarak döndürülür.

Liste 5 - WorkController.vb

Public Class WorkController
    Inherits System.Web.Mvc.Controller

    Function Index()
        Return DateTime.Now
    End Function

End Class

Liste 5'teki Index() eylemi bir DateTime nesnesi döndürür. ASP.NET MVC çerçevesi DateTime nesnesini bir dizeye dönüştürür ve ContentResult içindeki DateTime değerini otomatik olarak sarmalar. Tarayıcı, tarih ve saati düz metin olarak alır.

Özet

Bu öğreticinin amacı, ASP.NET MVC denetleyicileri, denetleyici eylemleri ve denetleyici eylem sonuçları kavramlarını tanıtmaktı. İlk bölümde, bir ASP.NET MVC projesine yeni denetleyiciler eklemeyi öğrendinsiniz. Daha sonra, bir denetleyicinin genel yöntemlerinin evrene denetleyici eylemleri olarak nasıl maruz olduğunu öğrendinsiniz. Son olarak, bir denetleyici eyleminden döndürülebilecek farklı eylem sonuçları türlerini ele aldık. Özellikle, bir denetleyici eyleminden ViewResult, RedirectToActionResult ve ContentResult'un nasıl döndürüleceği açıklandı.