Merhaba arkadaşlar.Uzun bir aradan sonra bir yazı daha yazmak istedim. Lafı daha fazla uzatmanın anlamı yok;Şimdi size bu konu hakkında kısa bir bilgi vermek istedim. Diyelim ki projenizi yaptınız bitti. Bu projenizde URLRewriter da kullandınız. Yaptığınız site de iletişim bölümü koydunuz ve bu iletişim bölümünde de bir buton kullandınız. Siz bu iletişim sayfasında gönder butonuna bastığınızda sayfanızın eski halini alıyor. Örnekleyecek olursak sitenizin orjinal URL yapısı www.sitenizinadi.com/03/07/2009/iletisim.html olsun. Siz burada butona bastığınızda ise; www.sitenizinadi.com/Default.aspx?QuerySorgusu=IletisimSayfasişeklinde oluyor. Bu sorunun nedeni ise Asp.NETiçerisinde bulunan form kontrolünün action özelliğinin render edilmemesidir.
Bundan dolayı Codebehind tarafından form kontrolümüzün ne kadar çok özelliğini kapatırsak kapatalım bu problem çözülmeyecektir. Biz ise buna önlem olarak kendimiz yeni bir form nesnesi oluşturacağız ve problemimizi çözmüş olacağız.using System;using System.Collections.Generic;using System.Text;using System.Web;using System.Web.UI;namespace HLTForum{public class Form : System.Web.UI.HtmlControls.HtmlForm{protected override void RenderAttributes(HtmlTextWriter writer){writer.WriteAttribute(“name”, this.Name);base.Attributes.Remove(“name”);writer.WriteAttribute(“method”, this.Method);base.Attributes.Remove(“method”);this.Attributes.Render(writer);base.Attributes.Remove(“action”);if (base.ID != null)writer.WriteAttribute(“id”, base.ClientID);}}}
Böylece kendimize yeni bir form kontrolü oluşturmuş olduk. Şimdi ise bunu eski formu silip yerine ekliyeceğiz.Tabi bu eklemeyi yapmak için öncelikle oluşturduğumuz form kontrolümüze ait olan dll dosyasını projemize referans olarak ekleyeceğiz.öncelikle sayfamızın başına<%@ Register TagPrefix="HLT" Namespace="HLTForm" Assembly="HLTForm" %>
ifadesini ekleyelim.Bu işlemi yaptıktan sonra eski form kontrolünün olduğu satırı silelim ve yerine

kodunu ekleyelim.Son olarak Codebehind tarafına geçerek Pege_Load eventimizin altınaform1.Attributes.Add(“action”, Request.RawUrl);
kodunu ekleyelim. İşte bu kadar, artık sayfalarımız PostBack olsa bile hiç bir şekilde değişmeyecektir.Hepinize sorunsuz .Net li günler dilerim.Kolay gelsin.iyi çalışmalar.