ASP.NET 4.0 ile URL Routing Yapımı
7361 görüntüleme

Merhaba Arkadaşlar,

Birçok sitede url routing anlatılmış ama ben bile anlamak için baya bir site gezdim durdum. Birde ben anladığım şeklini anlatayım..

öncelikle veri tabanında sayfalar adında bir tablom var

 

 

bu tabloda kullanacağım bir S_id ve S_Baslik kısmını işleyeceğim 

visual studio da bir global.asax ekleyelim

 

 

öncelikle global.asax a eklememiz gereken  <%@ Import Namespace="System.Web.Routing" %> bunu en üstte bir ekleyelim..

ardından Application_Start bloğunun içerisine aşağıdaki gibi 

void Application_Start(object sender, EventArgs e) 
    {
     
        System.Web.Routing.RouteTable.Routes.MapPageRoute("Sayfalar", "{S_id}_{S_Baslik}.aspx", "~/Sayfa.aspx");

    }

 

yukarıdaki kodu anlatalım "Sayfalar" benim bu routing ve verdiğim isim siz ne verirseniz fark etmez {S_id} benim veritabanında tuttuğum id, {S_Baslik} ise benim yine veritabanında tuttuğum sayfaların başlığı kısmı sonuna .aspx koydum siz isterseniz onu kullanmayabilirsiniz ya da görünecek başka bir uzantı ekleyebilirsiniz. id ve başlık arasına "_" altçizgi ben ara ayraç olarak yerleştirdim. ör: .html, .php, .bb gibi

yukarıdaki işlemde en sonra bu routing işlemi hangi sayfa üzerine gideceğidir. bunu querystring ile yolladığınız gibi düşünün bir sayfaya veriyi gönderip orda işlem yapma mantığı sonuçta ben sayfa.aspx e gönderiyorum..

routing kısmımız tamam şimdi gelelim bir linki buraya nasıl göndereceğiz.

öncelikle Temizle adında bir class oluşturalım bu class başlıktaki türkçe karakterleri ve boşlukları alıp temizlemesini sağlasın. Aşağıda Temizle classının tamamını veriyorum.

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for Temizle
/// </summary>
public static class Temizle
{
	
		 public static string UrlCevir(this string kelime)
        {
            if (kelime == "" || kelime == null) { return ""; }
            kelime = kelime.Replace("ş", "s");
            kelime = kelime.Replace("Ş", "S");
            kelime = kelime.Replace(".", "");
            kelime = kelime.Replace(":", "");
            kelime = kelime.Replace(";", "");
            kelime = kelime.Replace(",", "");
            kelime = kelime.Replace(" ", "-");
            kelime = kelime.Replace("!", "");
            kelime = kelime.Replace("(", "");
            kelime = kelime.Replace(")", "");
            kelime = kelime.Replace("'", "");
            kelime = kelime.Replace("ğ", "g");
            kelime = kelime.Replace("Ğ", "G");
            kelime = kelime.Replace("ı", "i");
            kelime = kelime.Replace("I", "i");
            kelime = kelime.Replace("ç", "c");
            kelime = kelime.Replace("ç", "C");
            kelime = kelime.Replace("ö", "o");
            kelime = kelime.Replace("Ö", "O");
            kelime = kelime.Replace("ü", "u");
            kelime = kelime.Replace("Ü", "U");
            kelime = kelime.Replace("`", "");
            kelime = kelime.Replace("=", "");
            kelime = kelime.Replace("&", "");
            kelime = kelime.Replace("%", "");
            kelime = kelime.Replace("#", "");
            kelime = kelime.Replace("<", "");
            kelime = kelime.Replace(">", "");
            kelime = kelime.Replace("*", "");
            kelime = kelime.Replace("?", "");
            kelime = kelime.Replace("+", "-");
            kelime = kelime.Replace("\"", "-");
            kelime = kelime.Replace("»", "-");
            kelime = kelime.Replace("|", "-");
            kelime = kelime.Replace("^", "");
            return kelime;
        }
	}

 

yukarıdakini aynen kullanabilirsiniz.

 

şimdi default.aspx den repeater içerisinde  <a href ile bir link verelim. repeater içerisinde olduğu için Eval ile direk verileri çekebiliyorum.

 

<a href='<%#Eval("S_id") %>_<%#string.Format(Temizle.UrlCevir(Eval("S_Baslik").ToString()))%>.aspx'><%#Eval("S_Baslik").ToString()%></a>

 

yukarıda ki <%#Eval("S_id") %> ilgili verinin id değerini aldım araya bir alt çizgi bizim routing ile aynı şekilde koydum ardından Temizle adındaki class yardımıyla Başlık verisini temizliyouz. sonuna yine routing teki gibi .aspx dedim ve <a></a> arasına normal görünen başlığı aldım..

şuanda veritabanından gelen başlığı url routing ile çevirmiş olduk.

örnek : www.bildiklerimiz.net/4_URL-Routing-Yapimi.aspx

şeklinde bir çıktı olmuş oldu baştaki 4 bizim id miz gerisi temizlenmiş başlığımız sonundaki .aspx ise bizim verdiğimiz uzantı.

şimdi sayfa.aspx de bundan gelenleri bir nebze querystring deki gibi nasıl alacağımıza

sayfa.aspx.cs de

gelen id yi almak için

int id = Convert.ToInt32(RouteData.Values["S_id"]);

 

gelen başlığı almak için

string baslik = RouteData.Values["S_Baslik"].ToString();

 

geriye normal klasik işlemleriniz getir, göster, yazdır falan filan....

anlamadığınız takıldığınız yer olursa yardımcı olmaya çalışırım..

bir sonraki makalede görüşmek dileğiyle...

Veysel APARI

Bildiklerimizi paylaşıyoruz, bilmediklerimizi öğreniyoruz.
biz bunları yapıyoruz ya siz...
© 2016 Bildiklerimiz.Net Tüm hakları saklıdır.