Anasayfa / Asp.Net / Asp.Net’te PostBack, IsPostBack ve AutoPostBack Kavramları
microsoft asp.net

Asp.Net’te PostBack, IsPostBack ve AutoPostBack Kavramları

Bu yazımda Asp.Net’e yeni başlayanlar ile C#’da masaüstü uygulama geliştirip daha sonra web uygulamalarına geçiş yapanların başlangıçta anlamakta zorlandığı postback, ispostback ve autopostback kavramlarına değineceğim.

PostBack Nedir?

İstemci bir talepte bulunduğunda sayfa sunucuya postalanır ve belirtilen işlemler sunucuda yapıldıktan sonra sayfa tekrar kendisine yönlendirilirse bu işleme postback adı verilir.

Konunun daha iyi anlaşılabilmesi için aşağıdaki örneği inceleyelim. Örneğimizde sayfa yüklendiğinde (Page Load olayı ile) DropDownList’e bazı iller ekleniyor. Sonrasında butona tıklayarak bir ilin daha listeye eklenmesini istiyoruz. Aşağıdaki kodlar ve ekran görüntüsü yardımıyla formumuzu oluşturalım.

DropDownList PostBack İşlemi
PostBack İşlemi İçin Örnek Tasarım

Butona tıkladığınızda Eskişehir ilinin listenin sonuna ekleneceğini düşünüyorsanız yanılıyorsunuz. Butona tıkladıktan sonra aşağıdaki gibi bir sonuç ile karşılaşırsınız.

dropdownlist postback sorunu
PostBack İşlemi Sonrasında Ortaya Çıkan Sonuç

Neden böyle bir sonuçla karşılaşıyoruz. Çünkü DropdownList kontrolümüzün viewstate durumu aktif. Bu durum sayfa postalandığında form verilerinin silinmesini engeller, sayfa tekrar yüklendiğinde ise form_load olayı tekrar çalıştırılır ve ikinci kez aynı veriler yüklenir. Bu durumu düzeltmek için IsPostBack özelliğinden faydalanılır.

IsPostBack Özelliği ve Kullanımı

Yukarıdaki bahsettiğimiz sorunun, çözüm yöntemlerinden biri sayfanın ispostback özelliğinin kullanılmasıdır. IsPostBack, sayfanın geri postalanması durumunu yönetir. Bu özellik, sayfanın ilk kez yüklenmesi ile sonradan postback işlemi sonucunda yüklenmesi arasındaki farkı yönetmek için kullanılır.

Yukarıdaki örneğimizi aşağıdaki gibi değiştirirsek sorun çözülecektir.

AutoPostBack ile Form Verilerinin Hemen Yollanması

Bazı kontrollerin AutoPostBack özelliği sayesinde kullanıcının kontrolden ayrılması anında, veriler sunucuya postalanır. Yani postalanma işleminin yapılması için buton’a tıklama yada farklı bir olayın tetiklenmesi beklenmez. Bu özelliğin kullanılabilmesi için sayfa tasarımı sırasında, verinin hemen postalanması istenen kontrolün AutoPostBack özelliğinin aktif hale getirilmesi yeterlidir.

AutoPostBack özelliğinin kullanımıyla ilgili olarak, seçtiğimiz ile göre ilçelerin değiştiği bir örnek uygulama yapalım.

autopostback il ilçe
AutoPostBack Özelliği için Örnek Tasarım

Tabiki bir il seçtiğimizde formun otomatik olarak postalanması gerektiğinden illerin bulunduğu DropDownList’in AutoPostBack özelliğini “True” yapıyoruz.

autopostback özelliği
AutoPostBack Özelliğini True Yapıyoruz.

Sonrasında kodlarımızı aşağıdaki gibi oluşturalım.

Evet listeden Ankara veya İstanbul’u seçtiğinizde o il içerisindeki ilçeler otomatik olarak listeleniyor. Konunun anlaşılması adına böyle bir örnek seçtim. Tüm il ve ilçelerin listelenmesi için bu yöntemi kullanmayınız.

Bu yazımda postback işlemi ile ispostback ve autopostback özelliklerine değinmeye çalıştım. Konuyla ilgili sorularınızı bana iletebilirsiniz. Kolay gelsin…

İlginizi Çekebilir!

captcha

Asp.Net ile Güvenlik Kodu (Captcha) Oluşturma

Güvenlik kodu (captcha), web sitelerimizi saldırılardan korumak için kullandığımız, basit olduğu kadar kullanışlı bir güvenlik …


6 Yorumlar

  1. Güzel bir anlatım olmuş elinize sağlık

  2. Çok güzel bi açıklama sağolun. Allah razı olsun

  3. bir sorunum var. bir tasarımım var ve içinde tab menü var. 3. tabdayken postback olması gerekiyor. post olduktan sonra 1. taba geçiyor doğal olarak. normalde domain.com/sayfa#tab3 diye yönlendirirken response.redirectpermanent(“sayfa#tab3”); komudu yemiyor. Bir fikriniz varmı?

    • çözümü farklı şekilde yaptım. Hazır css kütüphanesi yerine panel ve buton kullanarak yaptım. Şimdilik efek eklemedim. İlerleyen zamanda o konuya da bakacağım.

  4. Çok-çok teşekkürler. mükemmel bir anlatım 🙂

  5. Geç oldu ama başka arkadaşlar faydalansın.
    AjaxToolkit TabPanel kullanmayı deneyebilirsin.

Yazarız için bir cevap yazın Cevabı iptal et

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

Time limit is exhausted. Please reload the CAPTCHA.