ASP.NET 4.0'da UrlRouting

0 dakikada yazıldı

12242 defa okundu

Düzenle

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.

[VB]

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.

[VB]

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.

Kısa yolda URLRouting'e özel link.
Kısa yolda URLRouting'e özel link.

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.

[ASP.NET]

<form id="form1"
runat="server">

    <asp:Label
ID="Label1" runat="server" Text="<%$RouteValue:adi%>" />

</form>

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

Hepinize kolay gelsin.