Yazar Ol Yazar Girişi
Yazar Girişi
E-Posta Adresi
Şifre
Şifremi Unuttum
Asp.Net .Net MVC PHP & MySQL C# PhotoShop CSS jQuery AlgoritmA MsSQL Server HTML Ruby
- Kategoriler -
Türkçe
English
German
Tüm Kategoriler
ASP.NET 4.0 ile URL Routing Yapımı

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

Sosyal Hesabında Paylaş

9094 görüntüleme

Yorumlar
Adınız Soyadınız
Mail Adresiniz
Doğrulama Kodu

Gokhan 8 ay önce yazıldı.

merhaba veysel bey;

id kısmını url göstermek istemez isek nasıl bir yöntem izlememiz gerekiyor.

Veysel APARI8 ay önce cevap verdi.
İd göndermezsin sadece başlık gönder. Ama başlıklarının benzersiz olması gerekir ki karışıklık olmasın. Başlık benzersiz ise ha id çekmişsin ha başlık fark etmez. İlk veriyi kaydederken başlık kontrolü yap aynısı varsa ya uyar değiştirsin ya da otomatik aynı başlık olursa yeni başlığın sonuna random rakam attır. Genelde öyle yapıyorum ben

Bildiklerimiz.Net Bildiklerimizi paylaşıyoruz, bilmediklerimizi öğreniyoruz. biz bunları yapıyoruz ya siz...

© 2020 Bildiklerimiz Tüm hakları saklıdır.
bir Bildiklerimiz.Net projesidir.