Search

ASP.NET ile URL ROUTING



0 yorum

ASP.NET URL ROUTING ve URL Dönüştürme Fonksiyonu


aspnet urlrouting erenguvercin

Web sitesi yaparken genellikle adres satırında ne yazdığını fazla umursamaz çalışmasıyla ilgileniriz. Ancak sitemizin SEO uyumlu olmasını istiyorsak adres satırında ne yazdığı oldukça önemlidir. Çünkü arama motorları adres satırlarına çok değer veriyor.
URL Routing kullanmadan yapılan işlemler sonucunda arama motoru için anlamsız çıktılar elde ederiz, özellikle query string kullanımlarımız iyice anlamsızlaştırır. 

Klasik kullanım:
http://localhost:56415/Urunler.aspx?Kategori=Kirtasiye&UrunTuru=Kitap
Yukarıdaki gibi bir kullanım istenmeyen kullanımdır. Bu kullanımı URL Routing kullanarak aşağıdaki gibi yapabiliriz.
URL Routing ile kullanım:
http://localhost:56415/Urunler/Kirtasiye/Kitap
Yukarıdaki kullanımsa arama motorları tarafından anlaşılır olduğu gibi, kullanıcı tarafından bile anlaşılabilir.

URL Routing, ASP.NET 4.0 ile geldi ve kullanımı oldukça kolay. Bu kullanımın başrolundeyse hyperlink elementi var. Gelelim nasıl kullanacağımıza, yukarıdaki örneğe göre anlatım yapacağım.
Elimizde Urunler.aspx sayfası var. Biz bu sayfaya Kategori ve UrunTuru querystringleri ile istekte bulunacağız.
Global.asax:

    void Application_Start(object sender, EventArgs e) 
    {
       //Urunler adında bir Route oluşturuyoruz ve Kategori, UrunTuru adında iki parametre ekliyoruz.
       RouteTable.Routes.Add("Urunler", new Route("Urunler/{Kategori}/{UrunTuru}", new PageRouteHandler("~/Urunler.aspx")));   
    }
Default.aspx:

    Ürünleri Görüntüle

Artık istediğimiz gibi bir URL'e sahibiz. Default.aspx sayfasından, Urunler.aspx sayfasına istek yaptığımız zaman http://localhost:56415/Urunler/Kirtasiye/Kitap şeklinde bir linkle karşılaşacağız.
Şimdi sıra geldi gelen querystringleri almaya...
Urunler.aspx:

    protected void Page_Load(object sender, EventArgs e)
    {
      string rqKategori="", rqUrunTuru="";
      if (RouteData.Values["Kategori"]!=null)
      { 
         rqKategori = RouteData.Values["Kategori"].ToString();
      }
      if (RouteData.Values["UrunTuru"]!=null)
      { 
         rqUrunTuru = RouteData.Values["UrunTuru"].ToString();
      }
    }

Bu şekilde URL Routing kullanımını sağlayabilirsiniz.




URL Dönüştürme Fonksiyonu

URL Routing kullanımını sağladınız ancak hala adres satırında anlamsız ifadeler yer alıyor olabilir. Bu ifadeler türkçe karakter ve özel karakterlerden kaynaklanıyor. Bu durumu çözmek için bir fonksiyon kullanıyorum. Fonksiyon aşağıdaki gibi...

UrlDonustur Fonksiyonu:

    public string UrlDonustur(string Yazi)
    {
       try
       {
            string strSonuc = Yazi.Trim();

            strSonuc = strSonuc.Replace("-", "+");
            strSonuc = strSonuc.Replace(" ", "+");
           
            strSonuc = strSonuc.Replace("ç", "c");
            strSonuc = strSonuc.Replace("Ç", "C");

            strSonuc = strSonuc.Replace("ğ", "g");
            strSonuc = strSonuc.Replace("Ğ", "G");

            strSonuc = strSonuc.Replace("ı", "i");
            strSonuc = strSonuc.Replace("İ", "I");

            strSonuc = strSonuc.Replace("ö", "o");
            strSonuc = strSonuc.Replace("Ö", "O");

            strSonuc = strSonuc.Replace("ş", "s");
            strSonuc = strSonuc.Replace("Ş", "S");

            strSonuc = strSonuc.Replace("ü", "u");
            strSonuc = strSonuc.Replace("Ü", "U");
            
            strSonuc = strSonuc.Trim();
            strSonuc = new System.Text.RegularExpressions.Regex("[^a-zA-Z0-9+]").Replace(strSonuc, "");
            strSonuc = strSonuc.Trim();
            strSonuc = strSonuc.Replace("+", "-");
            return strSonuc;
        }
        catch (Exception ex)
        {
            throw ex;
        }
     }
Querystring'lerinizi bu fonksiyonu kullanarak yollarsanız, adres satırında anlamlı ifadeler çıkacaktır. 
URL Routing kullanımıyla ilgili karşınıza çıkacak bazı hatalar olabilir, sonraki yazım karşılaştığım hatalar ve çözümleriyle ilgili olacak. Yazıya buradan ulaşabilirsiniz.

0 yorum:

Yorum Gönder

Check Page Rank
DMCA.com