logo
Welcome Guest! To enable all features please Giriş or Kayıt.

Bildirim

Icon
Error

Ayarlar
Son mesaja git Go to first unread
mehmetzekikir  
#1 Gönderildi : 9 Mayıs 2014 Cuma 09:44:38(UTC)
mehmetzekikir

Sıralama: Administration

Gruplar: Administrators
Katılan: 6.05.2014(UTC)
Mesajlar: 670

19 Kere Teşekkür Etti.
152 Mesajına Toplam 253 Kere Teşekkür Edildi.
Bilindiği üzere web uygulamalarının ana amaçlarından biri arama motorlarında üst sıraları zorlamaktır. Bunun için webmasterlar sitelerine SEO çalışmaları yaparlar. (SEO = Search Engine Optimization). Örneğin bir makale yazdığımızı düşünelim, yazdığımız makaleyi gösterdiğimiz sayfa MakaleGoster.aspx olsun. Biz bir makaleye tıkladığımda, tarayıcı bizi www.sizinsiteniz.com/MakaleGoster.aspx?id=1 şeklinde yönlendirecektir. Halbuki bizim tıkladığımız makalenin adı ASP.NET olsun. Şunu unutmamız lazım, aspx den sonraki uzantıları ne yazık ki arama motorları incelememektedir. İşte bu sebepten dolayı yazdığınız makaleler ne yazık ki arama motorlarında çıkmayacaktır. Sizce urlimiz böyle olsa nasıl olurdu. www.sizinsiteniz.com/MakaleGoster/ASP.NET, emin göze nasıl gelir bilmem ama arama motorlarına çok cazip gözükeceğinden hiçbir şüphem yok.

O zaman bunu nasıl yaptığımıza hep beraber bakalım.

Bir adet C# da açılmış bir empty asp.net projesi oluşturalım.

Projemize bir adet default.aspx dosyası ve içeriği göstereceğimiz Page.aspx dosyası ekleyelim. Sonra Sql Servermızı açalım bir database oluşturalım, ben adına urlRewriting verdim. Sonra bu database bir tablo ekleyelim. Database in adı
Content olsun. Content e de 3 tane alan ekleyelim

Kod:
CREATE TABLE [dbo].[Content](
      [id] [int] IDENTITY(1,1) NOT NULL,
      [name] [varchar](100) NULL,
      [content] [varchar](500) NULL,
 CONSTRAINT [PK_Content] PRIMARY KEY CLUSTERED
(
      [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF,  IGNORE_DUP_KEY = OFF,  ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON[PRIMARY]
) ON [PRIMARY]


Bu oluşturduğumuz tablomuza da birkaç kayıt ekleyelim. Uygulamamıza bir global.asax dosyası ekleyelim. Global.asax ın içine ,

Kod:
void Application_Start(object sender, EventArgs e)
    {
        System.Web.Routing.RouteTable.Routes.MapPageRoute("icerik","icerik/{id}", "~/Page.aspx");
    }



RoutName : İstediğiniz ismi verebilirsiniz, Verdiğiniz rootun adı,
RouteUrl: Gözükmesini istediğiniz adres, biz burada içerik dedik. İd ise bizim query stringimizdir.
Physical File: Rout işlemini yapacağımız sayfamızdır.

Şimdi ControlUrl diye bir class yazacağız. Bu yazacağımız class ın amacı tamamen karater kontrolüdür. Çünkü url de Türkçe karakter sorun çıkarabilir.

Kod:
public static string ModifyUrl(string Text)
    {
        try
        {
            string strReturn = Text.Trim();
 
            strReturn = strReturn.Replace("ğ", "g");
            strReturn = strReturn.Replace("Ğ", "G");
            strReturn = strReturn.Replace("ü", "u");
            strReturn = strReturn.Replace("Ü", "U");
            strReturn = strReturn.Replace("ş", "s");
            strReturn = strReturn.Replace("Ş", "S");
            strReturn = strReturn.Replace("ı", "i");
            strReturn = strReturn.Replace("İ", "I");
            strReturn = strReturn.Replace("ö", "o");
            strReturn = strReturn.Replace("Ö", "O");
            strReturn = strReturn.Replace("ç", "c");
            strReturn = strReturn.Replace("Ç", "C");
            strReturn = strReturn.Replace("-", "+");
            strReturn = strReturn.Replace(" ", "+");
            strReturn = strReturn.Trim();
            strReturn = new System.Text.RegularExpressions.Regex("[^a-zA-Z0-9+]").Replace(strReturn, "");
            strReturn = strReturn.Trim();
            strReturn = strReturn.Replace("+", "-");
            return strReturn;
        }
        catch (Exception ex)
        {
            throw ex;
        }
                }


Bu kodu ekledikten sonra default.aspx sayfamızı açalım ve içine veri tabanından okuma işlemlerini ve Routlama yapacağımız kodu yazacağız.


Kod:
protected void Page_Load(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection();
        con.ConnectionString = "Server=.;Database=urlRewriting;Trusted_Connection=True;";
 
        try
        {
            con.Open();
            ResultLabel.Text = "baglandık";
            string sql = "select * from Content where id = 2";
 
            SqlCommand cmd = new SqlCommand(sql, con);
            string i = "";
            SqlDataReader dr = cmd.ExecuteReader();
 
            if (dr.Read())
            {
                i = ControlUrl.ModifyUrl(dr.GetString(1));
                UrlLinkLabel.Text=dr.GetString(1);
                UrlLinkLabel.PostBackUrl = Page.GetRouteUrl("icerik", new { id = i });
            }
 
            con.Close();
 
        }
        catch (Exception exc)
        {
            ResultLabel.Text = "Bağlanamadık";
        }  
 
    }


Bu sayfada bir adet linklabel ve label kullandık. LinkLabel sayesinde Page.aspx sayfasına yönlendirme yaptık. Label sayesinde de veri tabanına bağlantı durumumuzu kontrol etmiş olduk.

Son aşamaya geldik, Request yolladığımız sayfa olan Page.aspx sayfasının bu requeste bir karşılık vermesi gerekmetedir. Page.cs dosyasını açalım ve

Kod:
protected void Page_Load(object sender, EventArgs e)
    {
        string id = RouteData.Values["id"].ToString();
    }


Şuan itibari ile kodumuz hazırdır. Url routing yapmadan önce uygulamayı çalıştırdığımızda adres satırında

http://localhost:45198/UrlReWriting/Page.aspx?id=2

karşımıza çıkacaktır. Routing işlemini yaptıktan sonra ise

http://localhost:45198/UrlReWriting/Makale/ASP.NET
Karşınıza çıkacaktır
Sql Server 2016 Eğitimiz 19 Mayıs tarihinde başlayacaktır. 32 Saat Olup Ücret 1450 TL + KDV'dir. Kayıt ve ayrıntılar için tıklayınız

twitter.com/dbakademi
Dua ve teşekkür en büyük servetlere bedel...


Bu konudaki kullanıcılar
Guest (3)
Forumu Atla  
Bu foruma yeni konular postalayamazsınız.
Bu forumda ki konulara yeni posta gönderemezsiniz.
Bu forumdaki postalarınızı silemezsiniz.
Bu forumdaki postalarınızı düzenleyemezsiniz.
Bu forumda anketler yaratamazsınız.
Bu forumdaki anketlere oy veremezsiniz.