people

ASP.NET 4.0'da UrlRouting

URLReWrite, URLMapping veya URLRouting adını ne koyarsanız koyun bugün web projelerinin olmazsa olmazlarından biri de web siteleri içi linklerin okunabilir ve arama motorları tarafından rahatlıkla anlaşılabilir hale getirilmesi. Bunun için kullanılabilecek kolay veya zor birçok teknik var. Bunlardan bazıları request başına gelen adresi alıp değerlendirirken bazıları daha alt seviyelerden de ilerleyebiliyor. Bu noktada bence önemli olan olabildiğince dış ürün veya kütüphanelere başvurmadan ASP.NET içinde çözümü üretiyor olmak.

Aslında URLRouting şu anda ASP.NET MVC'de ve DynamicData projelerinde zaten kullanılıyor. Birkaç takla atarak aynı kütüphaneleri normal ASP.NET projelerine almak da mümkün. ASP.NET 4.0 tarafında ise çok daha rahat kullanıma sahip bir şekilde URLRouting karşımıza çıkıyor.

İlk olarak gelin Routing kurallarımızı belirleyelim. Bunun için sitemize bir Global.asax dosyası ekleyerek Application'ın Start event'ında gerekli tanımlamaları yapabiliyoruz.

"Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
Routing.RouteTable.Routes.Add("Sayfalar",
new Routing.Route("sayfa/{adi}",
new Web.Routing.PageRouteHandler("~/sayfa.aspx")))
End Sub
"

Yukarıda gördüğünüz kod içerisinde sanal yol olarak tanımladığımız sayfa/Daron şeklindeki adresleri sayfa.aspx'e yönlendiriyoruz. Peki "daron" parametresine ne oldu dediğinizi duyar gibiyim. Dikkat ettiyseniz aslında Daron parametresini adi adında bir değişkene aktarmış olduk. Bu değişken otomatik olarak sayfa.aspx'e gönderilecek. Sayfa.aspx içerisinde bu gibi parametrelere ulaşmak için de aşağıdaki kodu kullanabiliyoruz.

"Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim Gelen As String = Page.RouteData.Values("adi")
Response.Write(Gelen)
End Sub
"

İşte bu kadar basit. Ne kadar kolay değil mi? İsterseniz Application Startup durumda çok sayıda Routing tanımlayabilirsiniz. Tüm bu Routingler içerisindeki değerler uygun sayfalara parametre olarak gönderilecektir. Söz konusu sayfalar da bu parametreleri alarak gerekli işlemleri yapabilirler.

RouteUrl ve RouteValue

Peki ya belirli bir sayfadan diğerine link vereceksek? Hatta link verilen sayfada da parametreyi sayfa içerisindeki HTML kodunda kullanacaksak? Bir üstteki örnekte basit bir şekilde "Daron" parametresini sayfa Routing'ine gönderdik ve sayfa.aspx de bunu alıp ekrana yazdı. Oysa bunu yapmanın çok daha kolay bir yolu daha var.


Gördüğünüz gibi expression builderlar kullanarak hızlıca gerekli linki yaratabiliyoruz. İşin güzel tarafı eğer Global.asax içerisinde parametre olarak "adi" parametresini alan Routing kuralını değiştirirseniz bir anda tüm projenizdeki linklerin de uygun şekilde değişip güncel hallerinin yaratılıyor olması. Böylece hiç uğraşmadan dinamik bir altyapı yaratmış oluyorsunuz.

"< id="form1" runat="server">
< id="Label1" runat="server" text="">" />
< /form>"

Ayrıca yukarıdaki şekilde herhangi bir sayfaya gelen parametreyi de RouteValue expression ile rahatlıkla alıp sayfada kullanabilirsiniz.

*Daron Yöndem


0 yorum:

Yorum Gönder