ASP .NET MVC Routing


Merhabalar, bu yazımda sizinle MVC Routing yapısıyla ilgili bilgileri, getirdiği avantajları ve dikkat etmemiz gereken noktaları paylaşmaya çalışacağım.

MVC Routing nedir ve nasıl işler?

URL, web sayfamıza ulaşmak için kullanılan adrestir. Bir nevi bizi istediğimiz sayfaya götüren yoldur. Aslında biz bu yolu kullanarak bir dosyanın fiziki konumuna ulaşmış oluruz.

Örneğin URL’imiz şöyle olsun;

http://www.websitesi.com/dizin/dosya.aspx

Bu URL’e baktığımızda dosya.aspx sayfasının dizin klasörü içerisinde yer aldığını anlayabiliriz. MVC Routing yapısı bize sanal fiziki konumlar oluşturarak bir URL elde etmemizi sağlar. Bu yapıyı kullandığımızda benzer bir URL şöyle görünecektir;             http://www.websitesi.com/dizin/dosya

Bu yapıyı en basit haliyle açıklamak gerekirse, “dizin”in Controller ve “dosya”nın da Action olduğunu söyleyebiliriz. Yani, kullanıcılardan gelen istekler ilgili Controller içinde bulunan Action’lara iletilir ve URL’imizde bu şekilde görürüz.

controller_action_id_2-300x88

Örnekte olduğu gibi “Photo” adlı Controller altındaki  “Display” Action’ını “3” parametresini vererek çağırmış oluyoruz.

Peki biz bunu nerede belirtiyoruz? Bu yönlendirmeleri genel olarak “global.asax.cs” dosyasında RegisterRoutes fonksiyonu içerisinde belirtiriz. Bir Asp.net MVC projesini açtığımızda bize gelen şablonun yapısında da bu yönlendirme kurallarını görebiliriz.

Global.asax.cs dosyasının yapısı

global_asax_cs1

Burada “routes” nesnesi RouteCollection sınıfını temsil eder. MapRoute metodu URL’inizin hangi kurallar dahilinde oluşturulacağı, hangi Controller ve Action’ın çalıştırılacağı bilgisini içeren metoddur.

MVC uygulamasında bir URL ile istek geldiğinde “global.asax.cs” dosyası içerisindeki uygun MapRoute metodu seçilir ve bu MapRoute’da belirlenen kurallara göre Controller içerisindeki ilgili Action devreye girer.

MapRoute yapısı

Maproute_yapisi

MapRoute’ta çağırılan HomeController’n yapısı

homecontroller

MVC Routing Yapısının Avantajları

MVC Routing yapısını genel olarak açıklamış olduk, şimdi bize ne gibi faydaları olacağından bahsedelim. Gördüğümüz üzere URL’imiz kendi isimlendirdiğimiz parametrelerden oluşuyor ve bu parametrelerin hangilerinin URL’i oluşturacağını da kendimiz belirliyoruz. Yani istersek Controller ya da Action’dan yalnızca birinin URL’de yer almasını sağlayabiliriz.

Parametrelerin isimlerini sayfa içeriğine uygun olacak şekilde belirlemek sayfalarımızın kolay bulunabilirliğini ve hatırlanabilirliğini sağlayacaktır. URL’in anlamlı olması, arama motorlarında daha üst sıralarda yer almamızı da sağlayacaktır. Böylece sayfamızın ziyaret sayısı artış gösterecektir.

İkinci olarak sayfalarımızın güvenliği için de bu yapıyı kullanmak faydalı olacaktır. Çünkü bizim belirlediğimiz yönlendirme kuralları dışında sayfalarımıza erişmek mümkün olmayacaktır.

Dikkat Etmemiz Gereken Önemli Noktalar

Peki bu yapıyı kullanırken nelere dikkat etmemiz gerekir? Öncelikle, “global.asax.cs” dosyasında Route tanımlarken, Default’tan önce tanımlamaya dikkat etmeliyiz. Yani, yeni yönlendirme kuralımız Default yönlendirilmesinden önce gelmeli. Aksi halde URL’i Default üzerinden yönlendirmeye çalışacaktır ve bu da hataya sebep olacaktır.

onemlinoktalar

İkinci olarak Route tanımlarken parametreler arasında kullandığımız karakterlere dikkat etmeliyiz. Yanda görüldüğü üzere parametreler arasına herhangi bir karakter koymazsak hatalı bir yazım yapmış oluruz.

Son olarak, Route isimlerinin benzersiz olması gerekiyor. Kullanılan bir route ismi tekrarlandığında aşağıdaki gibi bir hata alırız.

hata

Bu bahsettiğimiz noktaları göz önünde bulundurarak yönlendirme kurallarımızı doğru bir şekilde uyguladıktan sonra, URL’i oluşturan üyelerden herhangi biri için yanlış parametreler girildiğinde hata alabiliriz. Bu durumu önlemek için de bazı kısıtlama kurallarını bilmemiz ve uygulamamız gerekir. Örneğin, URL’in çağırdığı Action’ın parametresi tarih formatında olması gerekirken metin girildiğinde hatayla karşılaşırız. Bunu önlemek için parametremize kısıtlama kuralları koymamız gerekir. Bunu yapmanın birkaç yöntemi var, bunlar;

1. Düzenli İfadeler (Regular Expressions) kullanmak
2. Http method kısıtlayıcıları (HttpMethodConstraint) kullanmak
3. Özel kısıtlama kuralları tanımlamak

Bu kısıtlama yöntemlerini de daha sonra detaylandırmaya çalışırız.

Bu makalemizde ASP.NET MVC Routing yapısına bir giriş yaparak Routing hakkında genel bir bilgilendirme yapmış olduk. Şimdilik bu kadar, umarım faydalı olmuştur. Diğer makalelerde görüşmek üzere…

– See more at: http://kodluyorum.com/index.php/asp-net-mvc-routing/#sthash.cqUFzMr6.dpuf

asp_net_mvc_routing