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
Ş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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin