ASP.NET MVC Yönlendirmesine Genel Bakış (VB)

tarafından Stephen Walther

Bu öğreticide Stephen Walther, ASP.NET MVC çerçevesinin tarayıcı isteklerini denetleyici eylemlerine nasıl eşlemektedir.

Bu öğreticide, her ASP.NET MVC uygulamasının ASP.NET Yönlendirme adlı önemli bir özelliği tanıtılır. ASP.NET Yönlendirme modülü, gelen tarayıcı isteklerini belirli MVC denetleyicisi eylemleriyle eşlemeden sorumludur. Bu öğreticinin sonunda, standart yönlendirme tablosunun istekleri denetleyici eylemleriyle nasıl eşleeceğini anlayacaksınız.

Varsayılan Yol Tablosunu Kullanma

Yeni bir ASP.NET MVC uygulaması oluşturduğunuzda, uygulama zaten ASP.NET Yönlendirme kullanacak şekilde yapılandırılmıştır. ASP.NET Yönlendirme iki yerde ayarlanır.

İlk olarak, uygulamanızın Web yapılandırma dosyasında (Web.config dosyası) ASP.NET Yönlendirme etkinleştirilir. Yapılandırma dosyasında yönlendirmeyle ilgili dört bölüm vardır: system.web.httpModules bölümü, system.web.httpHandlers bölümü, system.webserver.modules bölümü ve system.webserver.handlers bölümü. Bu bölümler olmadan yönlendirme artık çalışmayacağından, bu bölümleri silmemeye dikkat edin.

İkincisi ve daha da önemlisi, uygulamanın Global.asax dosyasında bir yol tablosu oluşturulur. Global.asax dosyası, ASP.NET uygulama yaşam döngüsü olayları için olay işleyicileri içeren özel bir dosyadır. Yol tablosu, Uygulama Başlatma olayı sırasında oluşturulur.

Listeleme 1'deki dosya, bir ASP.NET MVC uygulaması için varsayılan Global.asax dosyasını içerir.

Listeleme 1 - Global.asax.vb

' Note: For instructions on enabling IIS6 or IIS7 classic mode, 
' visit https://go.microsoft.com/?LinkId=9394802

Public Class MvcApplication
    Inherits System.Web.HttpApplication

    Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}")

        ' MapRoute takes the following parameters, in order:
        ' (1) Route name
        ' (2) URL with parameters
        ' (3) Parameter defaults
        routes.MapRoute( _
            "Default", _
            "{controller}/{action}/{id}", _
            New With {.controller = "Home", .action = "Index", .id = ""} _
        )

    End Sub

    Sub Application_Start()
        RegisterRoutes(RouteTable.Routes)
    End Sub
End Class

MVC uygulaması ilk kez başlatıldığında Application_Start() yöntemi çağrılır. Bu yöntem de RegisterRoutes() yöntemini çağırır. RegisterRoutes() yöntemi, yol tablosunu oluşturur.

Varsayılan yol tablosu tek bir yol (Varsayılan adlı) içerir. Varsayılan yol, BIR URL'nin ilk kesimini denetleyici adına, bir URL'nin ikinci kesimini bir denetleyici eylemine ve üçüncü segmenti id adlı parametreye eşler.

Web tarayıcınızın adres çubuğuna aşağıdaki URL'yi girdiğinizi düşünün:

/Home/Index/3

Varsayılan yol, bu URL'yi aşağıdaki parametrelerle eşler:

  • controller = Home

  • action = Dizin

  • id = 3

/Home/Index/3 URL'sini istediğinizde aşağıdaki kod yürütülür:

HomeController.Index(3)

Varsayılan yol, üç parametrenin de varsayılanlarını içerir. Bir denetleyici sağlamazsanız, denetleyici parametresi varsayılan olarak Home değerini kullanır. Bir eylem sağlamazsanız, eylem parametresi varsayılan olarak Index değerini kullanır. Son olarak, bir kimlik sağlamazsanız, id parametresi varsayılan olarak boş bir dizeye sahip olur.

Şimdi Varsayılan yol'un URL'leri denetleyici eylemlerine nasıl eşlemesine ilişkin birkaç örneğe göz atalım. Tarayıcı adres çubuğuna aşağıdaki URL'yi girdiğinizi düşünün:

/Ev

Varsayılan yol parametresi varsayılanları nedeniyle, bu URL'nin girilmesi, Listeleme 2'deki HomeController sınıfının Index() yönteminin çağrılmasına neden olur.

Listeleme 2 - HomeController.vb

<HandleError()> _
Public Class HomeController
    Inherits System.Web.Mvc.Controller

    Function Index(ByVal id As String)
        Return View()
    End Function

End Class

Liste 2'de HomeController sınıfı, Id adlı tek bir parametre kabul eden Index() adlı bir yöntem içerir. URL /Home, Id parametresinin değeri olarak Nothing değeriyle Index() yönteminin çağrılmalarına neden olur.

MVC çerçevesinin denetleyici eylemlerini çağırma yöntemi nedeniyle URL /Home, Listeleme 3'teki HomeController sınıfının Index() yöntemiyle de eşleşir.

Listeleme 3 - HomeController.vb (Parametre içermeyen dizin eylemi)

<HandleError()> _
Public Class HomeController
    Inherits System.Web.Mvc.Controller

    Function Index()
        Return View()
    End Function

End Class

Listeleme 3'teki Index() yöntemi herhangi bir parametre kabul etmez. URL /Home bu Index() yönteminin çağrılmasına neden olur. /Home/Index/3 URL'si de bu yöntemi çağırır (kimlik yoksayılır).

URL /Home, Liste 4'teki HomeController sınıfının Index() yöntemiyle de eşleşir.

Listeleme 4 - HomeController.vb (Null atanabilir parametreli dizin eylemi)

<HandleError()> _
Public Class HomeController
    Inherits System.Web.Mvc.Controller

    Function Index(ByVal id? As Integer)
        Return View()
    End Function

End Class

Liste 4'te Index() yönteminin bir Integer parametresi vardır. Parametresi null atanabilir bir parametre olduğundan (Nothing değerine sahip olabilir), Index() hatası oluşturmadan çağrılabilir.

Son olarak, Liste 5'teki Index() yönteminin URL /Home ile çağrılması, Id parametresi null atanabilir bir parametre olmadığından bir özel duruma neden olur. Index() yöntemini çağırmayı denerseniz, Şekil 1'de görüntülenen hatayı alırsınız.

Listeleme 5 - HomeController.vb (Kimlik parametresiyle dizin eylemi)

<HandleError()> _
Public Class HomeController
    Inherits System.Web.Mvc.Controller

    Function Index(ByVal id As Integer)
        Return View()
    End Function

End Class

Parametre değeri bekleyen bir denetleyici eylemi çağırma

Şekil 01: Parametre değeri bekleyen bir denetleyici eylemini çağırma (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Öte yandan URL /Home/Index/3, Listeleme 5'teki Dizin denetleyicisi eylemiyle sorunsuz çalışır. /Home/Index/3 isteği Index() yönteminin 3 değerine sahip bir Id parametresiyle çağrılmaya neden olur.

Özet

Bu öğreticinin amacı, ASP.NET Yönlendirme'ye kısa bir giriş sağlamaktı. Yeni bir ASP.NET MVC uygulamasıyla elde ettiğiniz varsayılan yol tablosunu inceledik. Varsayılan yolun URL'leri denetleyici eylemlerine nasıl eşlediğiniz hakkında bilgi edindiniz.