Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

Asp.NET IsPostBack ve AutoPostBack

Asp.NET sayfalarının ilk defamı yüklendiği yoksa serverdan Post mu edildiğini anlamak için Page nesnesinin bir özelliği olan IsPostBack özelliği kullanılır.Sayfaya , “Sayfa, servera postalanıp geri geldi mi?” sorusunu sorar.Bazen sayfanın ilk yüklendiğinde çalışmasını istediğimiz kodlarda, IsPostBack özelliğini kullanıyoruz.IsPostBack özelliği,bool tipinde geriye değer döner.Sayfa ilk defa açıldıysa False,servera postalanıp geri geldiyse(butona tıklamak gibi) True değeri dönecektir.

Şimdi IsPostBack’in neden kullanıldığını daha açık bir şekilde anlatmak için bir örnek yapalım.Sayfamıza bir DropDownList ve Button ekleyelim.Sayfanın Page_Load eventına gelip,DropDownList’e elemanları ekleyelim.

    protected void Page_Load(object sender, EventArgs e)
    {
        DropDownList1.Items.Add(new ListItem("Ankara","0"));
        DropDownList1.Items.Add(new ListItem("İstanbul", "1"));
        DropDownList1.Items.Add(new ListItem("İzmir", "2"));
        DropDownList1.Items.Add(new ListItem("Konya", "3"));
    }

Sayfanın ilk açılış hali yukardaki gibi olacaktır.Şimdi Button nesnemize bir kere tıklayalım. 🙂

 Gördüğünüz gibi sayfaya ilk yüklendiği zaman 4 elemanı bulunan DropDownList,sayfa Post Back edildiğinde eleman sayısını 8e çıkarttı :)Her Button nesnesine tıklandığında bu şekilde eleman sayısı artacaktır.Son kez görmek için Button nesnesine bir kere daha basılmış halini aşağıda yayınlıyorum.
Button nesnesine bir kere daha tıkladım, dört eleman daha eklenmiş oldu.Şimdi bu durumun sebebi nedir ve IsPostBack özelliği neden ve nasıl devreye giriyor bunu görelim.

Sayfa ilk talep edildiğinde, Page_Load metodu çalışmaktadır.Doğal olarak bu metod sayesinde,DropDownList nesnemize elemanlar yükleniyor.Sonra Button nesnesine tıkladığımız zaman,sayfamız servera gidip geliyor(Post – Back).Geldiği zaman(yani Back olduğunda) sayfamız yeniden yükleniyor doğal olarak.Bu durumda DropDownList nesnesine elemanlar tekrardan ekleniyor.
DİKKAT !!! Asp.NET kontrolleri servera gidip gelirken üzerlerindeki veriyi korurlar.
İşte bu sebepten dolayı,yani DropDownList nesnemiz servera gidip gelirken üzerindeki veriyi koruduğundan dolayı,Post-Back işleminde,koruduğu verilerin üzerine Page_Load metoduyla diğer elemanlarıda ekliyor.
IsPostBack metodu sayfa ilk açıldığında False,Post – Back edildiğinde True döner demiştik.İşte bu olası durumu engellemek için IsPostBack özelliğini kullanacağız.

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            DropDownList1.Items.Add(new ListItem("Ankara", "0"));
            DropDownList1.Items.Add(new ListItem("İstanbul", "1"));
            DropDownList1.Items.Add(new ListItem("İzmir", "2"));
            DropDownList1.Items.Add(new ListItem("Konya", "3"));
        }
    }

Yukarıdaki kontrol ile eğer sayfa ilk defa yükleniyorsa elemanlar DropDownList nesnemize doldurulacaktır.Post – Back işlemlerinde Page_Load metodu çalışacaktır ancak IsPostBack True döneceğinden dolayı, yaptığımız kontrol DropDownList’in yeniden doğmasına müsade etmeyecektir.
IsPostBack özelliği hakkında son olarak değinmem gereken bir kaç unsur var.

  • <a …> </a> tagı,sayfaya yeni bir istek gönderir.Sunucuya sayfa gönderip geri getirmez.İsteği üzerine sayfa geldiğinden dolayı IsPostPage özelliği False dönecektir.
  • Sayfanın refresh(yenileme) edilmesi,son yapılan isteğin tekrarlanması demektir.Son yapılan istek Post – Back ise, refresh yapınca yine Post – Back olur.Eğer değilse, refresh yapınca Post – Back olmaz.

Şimdide AutoPostBack özelliğine değinelim.DropDownList nesnemizden bir eleman seçtiğimiz zaman,CheckBox’ımıza tıkladığımız zaman,RadioButton tıklandığı zaman eğer sayfanın Post – Back olmasını istiyorsak,o nesnenin AutoPostBack özelliğini True yapmamız yeterlidir.

Sonraki yazılarımda görüşmek dileğiyle 🙂
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*