Herkese merhabalar bu seferki yazımız biraz makale biraz sorun çzümü tadında olucak. Bildiğiniz gibi Global. asax dosyası ile ReWritePath işlemini Gkhan Bağcı makale olarak yazdı bende sizlere video olarak sunmuştum. Fakat makalede veya videoda olsun postback problemine karşı nemli bir zaaf vardı. Bizler querystring'lerden kurtulmak adına ReWritePath işlemini projelerimizde uygularken postback olan sayfalarımızda querystring'ler belirlemekteydi. Blog içerisine ilk ReWritePath uygulamasını eklediğimde sayfasının postbak olmasını nlemek için UpdatePanel kullanmıştım. Bu işlem kısmen sorunu çzmüş olarak gzüksede aslında sayfamız html kaynak kodlarına baktığımızda yine querystring bilgimiz gzükmekteydi. rneğin Url bilgisi şu şekilde olan bir sayfanınyazilar/hepsini-sil-uygulamasi/123.aspx Form elemanın action zelliğindeaction="genelyazi.aspx?yaziID=123.aspx" şeklinde yazılmaktadır. Baktığımızda bazılarımız için nemsiz gzükebilir fakat ReWritePath işlemini uygulamamıza dahil ettiğimiz halde bu şekilde bir çıktı almamız bana "Bu ne perhiz bu ne lahana turşusu" Ataszünü hatırlatmadan edemiyor. MSDN'i biraz kurcaladıktan sonra sorunu çzdüm. ncelikle postback işleminin gerçekleşeceği sayfamız içerisinde HttpContext sınıfını kullanarak form elemanımızın action kısmındaki querystring bilgimizi sayfamızın Url bilgisi ile aynı hale getirelim. Bunun için ben FormAction adında bir metod yazdım. C# için formAction isimli metodumuz. Sade GorunumYazdir?01. public void FormAction 02.{03. string dosyayolu = Request. RawUrl;04. string path = dosyayolu. Split ;05. if (path. Length 4)06. 10.}Vb. net için FormAction isimli metodumuz. Sade GorunumYazdir?1. Public Sub FormAction 2. Dim dosyayolu As String = Request. RawUrl3. Dim path As String = dosyayolu. Split 4. If path. Length = 4 Then5. Dim yol As String = path(1) & "/" & path(2) & "/" & path(3)6. HttpContext. Current. RewritePath 7. End If8. End SubYukarıdaki metodumuza baktığımızda ncelikle şunu grüyoruz. dosyayolu isimli bir değişken'e sayfamızın uri bilgisi atanmakta. Daha sonra path isimli dizimize ise dosyayolu isimli değişkenimize atanan uri bilgisi "/" karakterine gre blünerek atanmakta. IF yapısı ile dizimizin uzunluğunun drde eşit olup olmadığını kontrol ediyoruz. Bylece sayfamızın postback olduğunda dizimizin sayısı drdü geçtiği için tekrar action kısmına bir yazım işlemi gerçekleşmeyecek ve uri bilgisini bozulmuyacak. Yol isimli değişkenimize ise path isimli dizimizin birinci ikinci ve üçüncü indeksleri aralarına "/" gelecek biçimde şekillendirilerek değer olarak verilmekte. Tahmin edersiniz ki birinci indeks'imiz "yazilar" klasoru ikinci indeks'imiz yazımızın başlığı "hepsini-sil-uygulamasi" ve üçüncü indeks'imiz ise yazımızın Id değeri yani "123.aspx". HttpContext sınıfımızın Current zelliğinde yer alan ReWritePath isimli metodumuz sayesinde ise yol değişkenimiz form elemanımızın action zelliğine bizim düzenlediğimiz biçimde yazılmakta. Yapmamız gereken tek şey artık bu metodumuzu sayfamızın Page_Load isimli metodunda cağırmak. Daha sonrasında sayfamızın html kodlarına bakacak olursak form elemanın action zelliğinde şu şekilde bir çıktı grürüz. yazilar/hepsini-sil-uygulamasi/123.aspxBirinci sorunuzumuz olan Url bilgisi ile form elemanın action zelliğindeki tutarsızlığı bu şekilde çzdükten sonra artık postback işlemi için geçerli olan sorunumuza bakabiliriz. Şuanda her ne kadar postback sorunumuzunda düzeldiğini sanıyorsanızda yanılıyorsunuz. Şimdi yapmamız gereken işlem sayfamızı bir şekilde postback işlemine tabi tutmak bunun için bir buton kullanabiliriz :) Burada yapmamız gereken şey butonun en son işi olarak aynı sayfayı tekrar yüklemesini sağlanmaktır. C# için Button1_Click isimli metodumuz. Sade GorunumYazdir?1. protected void Button1_Click 2. Vb. net için Button_Clik isimli metodumuz. Sade GorunumYazdir?1. Protected Sub Button1_Clik HandlesButton1. Clik2. Dim URL As String = Request. UrlReferrer. ToString 3. Response. Redirect 4. End SubEvet arkadaşlar bylece ReWritePath postback problemini bir nebzede olsun çzmüş olduk. Eğer şimdi kendi kendinize şyle bir soru soruyorsanız peki veritabanımızdan biz bir ID değerine gre verilerimizi çağıyoruz. Bu ID değerini nasıl yakalıyacağız? Bu durumda path isimli dizimizin inceliyecek olursanız orada ID değerimiz üçüncü indeks'de yer almakta formAction metodu içerisinde bu diziden ID değerimizi yakalayabiliriz. Aşağıdaki rnek uygulamalarıda inceleyebilirsiniz tabiki. Ben Recep SELLİ herkese bol kodlamalar. Csharp ile hazırlanmış kaynak kod : İndirmek için Tıklayınız VB. Net ile hazırlanmış kaynak kod :İndirmek için Tıklayınız 2 x pi x re x pi x pi x mi x 7