ASP.NET 4.0 ile URL Yönlendirme

Eyl 06, 2013
URL yönlendirme daha önce kütüphanelerle sağlanabilen bir özelliktir, ancak .NET 4.0 ile bu özellik için özel bir sınıf oluşturularak kullanımı daha kolay bir hale getirilmiştir. URL yönlendirme işlemi çok uzun ve karmaşık bağlantı isimlerinin okunmasında kolaylık sağlar. Bağlantı ismine bakılıp çok karmaşık görünen düzen URL yönlendirme işlemiyle okunabilir hale gelir, böylece kullanıcılar da sayfanın neresinde olduğu bilgisini daha rahat görebilir. Bu özellik kullanılmadığında arama motorları tarafından içeriklenme ihtimali azalır, görüntü kirliliği oluşur, parametrelerin okunması ve takibi zorlaşır. URL yönlendirme ile bu sorunlar ortadan kaldırılabilir. Tüm bunları anlatmak örneklerle daha kolay ve anlamlı olacaktır.

             Uygulama 1:

  1. Öncelikle Visual Studio 2010 kullanarak File (Dosya)->New (Yeni)->Web Site (Web Sitesi) izlenir ve açılan pencerede Visual C# ve ASP.NET Web Site (ASP:Net Web Sitesi) seçilip, projeye verilecek isim yazılır ve OK(Tamam) düğmesine tıklanır.

  2. Projeye Global.asax dosyası eklenir ve Global.asax dosyası içindeki Application_Start metodu içinde yönlendirme işlemleri yapılır. Bu işlemler sırasındaRouteTable sınıfından yararlanılır. RouteTable sınıfı Route adı ve Route nesnesi olmak üzere iki parametre alır. Uygulamaya gelen istekler Route formatına uygunsa Page Route Handler’ın gösterdiği yola yönlendirilir. Aşağıdaki örnekte Default.aspx ana sayfasından Test.aspx sayfasına yönlendirme işlemi yapılmıştır.

    <%@ Application Language="C#" %> 
    <%@ Import Namespace="System.Web.Routing" %> 
    <script runat="server"> 
    void Application_Start(object sender, EventArgs e)     
        { 
           RouteTable.Routes.Add("Test", new Route("Test/{Parametre}", new               PageRouteHandler("~/Test.aspx"))); 
        } 
    </script> 

  3. Artık anasayfaya gelen tüm istekler Application_Start metodu içinde Klasör/Parametre şeklinde yönlenecektir. Parametre istenen değer olabilir. Yukarıdaki formatta gelen tüm istekler Test.aspx sayfasına yönlendirilir.

  4. Anasayfaya bir Hyperlink eklenip sayfanın yönlendirileceği Route ve o Route’a bağlanacak parametre bildirilir.

    <asp:HyperLink ID="link" runat="server" NavigateUrl='<%$ RouteUrl:RouteName=Test, Parametre=Sayfa1 %>'>Test'e Git</asp:HyperLink> 

  5. Gönderilen parametrenin projedeki ihtiyaca göre Test.aspx sayfasında yakalanması gerekebilir. Bunun için aşağıdaki kod kullanılır.

    protected void Page_Load(object sender, EventArgs e)
        {
           if (RouteData.Values["Parametre"] != null
              {
                  Response.Write(RouteData.Values["Parametre"].ToString());
              }
        } 

  6. Bu uygulama sonucunda yönlendirilen URL aşağıdaki gibi olur.







             Uygulama 2:

  1. Yeni bir Asp.Net Web Site uygulaması yukarıdaki ilk adımda yapıldığı gibi açılır.

  2. Bu uygulamada Linq ile veritabanına bağlanılacaktır. Bu yüzden öncelikle projeye bir LinqtoSql nesnesi eklenir.



  3. Veritabanından çekilecek olan tablo Server Explorer (Sunucu Penceresi) yardımıyla bulunur ve eklenir.



  4. Projeye Global.asax dosyası eklenir ve aşağıdaki gibi düzenlenir.

    <%@ Application Language="C#" %> 
    <%@ Import Namespace="System.Web.Routing" %> 
    <script runat="server"> 
    void Application_Start(object sender, EventArgs e)     
        { 
           RouteTable.Routes.Add("dogumYeri", new Route("dogumYeri/
               {Parametre}", new PageRouteHandler("~/Default2.aspx"))); 
        } 
    </script> 

  5. Sıradaki işlem Default.aspx'te karşılaşılan ilk arayüzü belirlemektedir. Bunun için Default.aspx'te şu düzenlemeler yapılır.

    <asp:HyperLink ID="HyperLinkist" runat="server" NavigateUrl="<%$RouteUrl:RouteName=dogumYeri, Parametre=ist %>"
    Text="İstanbul" />
    <asp:HyperLink ID="HyperLinkank" runat="server" NavigateUrl="<%$RouteUrl:RouteName=dogumYeri, Parametre=ank %>"
    Text="Ankara" /> 
    <asp:HyperLink ID="HyperLinkank" runat="server" NavigateUrl="<%$RouteUrl:RouteName=dogumYeri, Parametre=izm%>"
    Text="İzmir" />
     
  6. Yeni bir Web Form eklenerek proje çalıştırıldıktan sonra HyperLink ile seçilen seçeneği farklı bir sayfaya yönlendirilmesi sağlanır.



  7. Yeni açılan Default2.aspx sayfası içine aşağıdaki kodlar yazılır.

    <asp:Datalist ID="Datalist1" runatBackcolor="server" Backcolor="White" 
    BorderColor="#999999" BorderStyle="None" BorderWidth="1px""3" CellPadding="3" GridLines="Verical" >
    <AlternatingItemStyle BackColor="#DCDCDC" /><FooterStyle BackColor="#CCCCCC" ForeColor="Black" />
    <HeaderStyle BackColor="#000084" Font-Bold="True" ForeColor="White" />
    <ItemStyle BackColor="#EEEEEE" ForeColor="Black" />
    <ItemTemplate>
    isim:
    <asp:Label ID="isimLabel" runat="server" Text='<%# Eval("isim") %>' />
    <br />
    soyisim:
    <asp:Label ID="soyisimLabel" runat="server" Text='<%# Eval("soyisim") %>' />
    <br />
    <br />
    </ItemTemplate>
    <SelectedItemStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" />
    </asp:Datalist>

    Böylece Default.aspx’ten sonra yönlendirilen sayfa için de arayüz düzenlemeleri Default2.aspx’te yapılmış olur.

  8. Default2.aspx.cs içinde ise URL yönlendirmede gönderilecek parametre seçimiyle ilgili kodlar yer alır.

    public partial class Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            LinqDataContext ldc = new LinqDataContext();
            if (RouteData.Values["Parametre"] != null)
            {
                DataList1.DataSource = ldc.Ogrencis.Where(q => q.dogumYeri 
                    == RouteData.Values["Parametre"].ToString());
                DataList1.DataBind();
            }
        }
    }

  9. Tüm bu işlemler yapıldığında artık URL yönlendirme işlemi tamamlanmış olur. Uygulamanın ekran çıktıları aşağıdaki gibi olur: