Asp.Net PostBack Kavramı
 

Asp.Net  yeni başlangıç yapıyorsanız . PostBack kavramını mutlaka öğrenmelisiniz. Zira bu kavram Asp.Net çalışma mantığını anlamada büyük derecede yardımcı olacaktır . Peki PostBack nedir   Client(İstemci)  bilgisayarda yapılan bir istek  ile sunucuda  bu isteğin  yerine getirilmesi  istemci bilgisayara yansıtılması PostBack'dir. Daha açık şekilde . Web sayfamızda  bir form doldurduğumuzu düşünelim .Formdaki verilerin   sunucuya gidip veritabanına eklenmesi gerekir. Bu şekilde sunucuya bir gidiş ve daha sonra  client'e yansıması var ise sayfa postback olmuş demektir.


Peki Bu Kavramı bilmek  nerelerde işimize yaracaktır ?

Hemen bir örnek üzerinden gidleim

Yeni bir  aspx sayfası oluşturalım .

Sayfamıza DropDownList atalaım . DropDownList 'e  elemanlarını  sayfanın  source kısmında  add item diyerek eklemeyelim . Code tarafından ekleyelim .

Birde buton atalım sayfamıza .  Fakat buton_click eventini  oluşturmayalım şimdilik .Sayfamızı çalıştıralım .

 

Görüntümüz bir üstteki gibi oalcaktır.

Butonu her tıkladığımda  aynı 5 item tekrar yükleniyor . Ne oluyor sayfa butona tıklayarak  postback ediyorum  her post back edişimde sayfanın page_load kısmından başlayarak yeniden çalıştırılıyor.

Dönüyorum  projeye  button'a çift tıklayıp buton_click event'ini ekliyorum .
Sayfaya bir Breakpoint  atıp    Asp.Net sayfayı  çalıştırma mantığını izleyelim

 

Tekrar projeyi çalıştırıyorum   .Butona her bastığımda   sayfa postback oluyor  mantığımıza göre  üst kısım işletilmeyecek   direk button_click event'i işletilecek derdik ama asp.net böyle değildir. Buton_click  event 'i olsa bile sayfa postback edilince ne olursa olsun page_load  kısmı  başından itibaren kodları işletilir. İşte burası  çok önemlidir. (Tabi burada asp.net şu bilgisi de önemli asp.net kontrolleri sunucuya gidiş gelişlerde üzerlerindeki değeri  korudukları önemli bir bilgidir.)
 

Çözüm yöntemleri

1. Asp.net kontrolleri sunucuya gidiş gelişlerde üzerlerindeki değeri koruyor dedik .Bunu  istediğimiz  kontrolün properties'ine gelip ,

 

Bir üst şekilde gibi  yani ,

EnableViewState true'dır varsayılan olarak .  False yaparsak sunucuya gidiş gelişlerde üzerlerindeki değeri korumaz yine herseferinde page_load çalışır eklenir ama sunucuya giderken üzerindeki değeri kaybedeceğinden    hep 5 kayıt  olacaktır . DropDownList ' te.

(Bazı kontrollerde geçerli değil bu özellik . Örn textboxda false yapsanda sunucuya gidiş gelişlerde değerini korur.)

 

ŞİMDİ BİZİM  YAPMAK İSTEDİĞİMİZ VE KONUMUZUN AÇILIŞ AMACI OLAN POSTBACK KAVRAMI İLE ÇÖZELİM BU SORUNU VE AYNI ZAMANDA POSTBACK KAVRAMINIDA ANLAMIŞ OLACAĞIZ BU ÖRNEK İL

 

2.Yöntem PostBack Kavramı ile Çözüm

 

Şöyle bir   kod yazdıracağız   sayfa ilk kez yüklendiğinde page_load daki kodları çalıştır  yüklensin dropdownlist ' e     ,  Sayfa geldikten sonra sunucuya istek gönderirsem dolmasın  . Asp.net te bu istekleri anlayan bir özellik var.

Bu özelliğin adı IsPostBack ' dir. Geriye boolean döndürmektedir. Sayfanın ilk yüklenmesi postback değildir. Sayfa geldikten sonraki sunucuda  istediğin her istek  postback'dir.

this.IsPostBack veya Page.IsPostBack yada yalnızca IsPostBack diye  3 farklı şekildede yazabiliriz. Aynı   işlevdedir 3 üde.

 

Brir üstte  resimde kod olarak belirttik
 

Kodun açıklması , Post edilmemişse    içindekileri çalıştırır. Ondan sonra butona tıkladık bir istek yolladık artık postback  true'dur . True olduğundan  o kod bloğu çalışmayacaktır.

 

Tarayıcıda Refresh yaparsak   Sayfayı ilk kez açmış gibi olmaz.  Tarayıcılar Refresh yaparken  şu mantıkla çalışır Refresh yapmadan bir önce  sayfadnın post back 'i neyse odur . 

Örneğin postback   true  ide refresh yaptık yine truedir. Çünkü refresh yapmadan bir önceki   postback true idi.

 

ÇOK ÖNEMLİ  LİNK  FARKI

AYNI SAYFADA BUTONUN ARDINDAN BİRDE

<a href="default.aspx"></a>  tıklanılınca yine kendi sayfasına     getiren bir  link yaptık . Bu linke her tıklanıldığında   siteye ilk kez istek yapmış gibi olur    postback tıklanmadan önce true   diyelim tıkladıktan sonra  false dur..

<a>   tagı demek yeni bir istek demektir.

 

Author: Engin Atalay
Date: 20.06.2012 18:24:34
View Count: 18691
 
 

COMMENTS
 
Resim Yüklenemedi
harun
1 Ağustos 2017 22:56
asp.nette form1 de yapılan sayısal hesaplamayı nasıl form2 deki labellere yazdırız
 
 
 
 
 
Resim Yüklenemedi
Tülin
11 Nisan 2016 14:15
Teşekkür ederim, mantığı bir türlü kafamda yer edememişti. Çok açıklayıcı oldu.
 
 
 
 
 
Resim Yüklenemedi
Fatih
16 Aralık 2015 13:22
Teşekkürler. Çok güzel bir makale olmuş
 
 
 
 
 
Resim Yüklenemedi
serdar
12 Mart 2015 00:33
Teşekkür Ederiz Yararlı Bir makale olmuş
 
 
 
 
 
Resim Yüklenemedi
Zafer
5 Eylül 2014 11:32
Tebrikler.Cok guzel bir makale olmuş..İnsanın postback kavramını unutup unutup tekrar okuyası geliyor ;)
 
 
 
 
 
Resim Yüklenemedi
ugur
1 Ağustos 2014 16:10
güzel bir anlatım
 
 
 
 
 
Resim Yüklenemedi
gökhan
3 Haziran 2014 12:05
bilgi için teşekkürler.
 
 
 
 
 
Resim Yüklenemedi
tuna
23 Mayıs 2014 16:10
anladığın şeyi güzel bir şekilde anlatmışsın. bravo. faydalı bi makale
 
 
 
 
 
Resim Yüklenemedi
Ender
15 Mayıs 2014 16:11
Denk geldim işime yaradı teşekkürler...
 
 
 
 
 
Resim Yüklenemedi
xxxx
28 Nisan 2014 21:33
çok güzel anlatım tşkkrler...
 
 
 
 
 
 
 
 
 
 
 
 
WRITE COMMENT
 
 
Your Name :
 
 
 
E-mail :
 
 
 
Your Message :
 
 
 
 
 
 
 
This project : ASP.NET MVC , RAZOR, Entity Framework , CSS , HTML , JQUERY(2.0.2) , AJAX the C# side-tier architecture was developed with logic.
 
Yukarı Çık