Asp.NET’te IsPostBack Olası Hatası ve Çözümü
Merhaba,
Asp.NET mimarisini öğrenirken akılda oluşacak şemalara anlam kazandıran Post – Back olayını tam anlamıyla sindirebilmek oldukça önemlidir. Aslında basit tarzda bir yapısal anlam ifade etsede, Asp.NET Web Forms mimarisini Asp.NET MVC mimarisinden ayıran temel noktalardan biri olduğunun farkındaysak eğer Post – Back kavramının bir mimarinin üzerine oturtulduğu temel olduğunu da anlamışız demektir. Asp.NET mimarisinde Post – Back olayını genellikle IsPostBack özelliği ile kontrol etmekteyiz. Bu yazımızda da IsPostBack kontrolünün göz ardı edildiği olası bir hata durumuna değineceğim.
Öncelikle hatamızın metinsel halini görelim.
Geçersiz geri gönderme veya geri çağırma bağımsız değişkeni. Yapılandırmada veya sayfada <%@ Page EnableEventValidation=”true” %> kullanılarak olay doğrulaması etkinleştirildi. Bu özellik güvenlik nedenleriyle, geri gönderme veya geri çağırma olayları bağımsız değişkenlerinin bunları başlangıçta işleyen sunucu denetiminden kaynaklandığını doğrular. Veriler geçerliyse ve beklendiği gibiyse, geri gönderme veya geri çağırma verilerini doğrulanmak üzere kaydetmek için ClientScriptManager.RegisterForEventValidation yöntemini kullanın.
Görsel halide aşağıdaki gibidir.
Şimdi bu hatanın hangi durumlarda? neden alındığını? konuşmamız gerekirse eğer, elimizdeki bir veri kümesini herhangi bir veri listeleyicide listelediğimizde, bu listeleme durumunu IsPostBack kontrolüyle gerçekleştirmiyorsak bu hatayı almaktayız. Bunun sebebi, listeleme işlemi gerçekleştirildikten sonra Server’a yapılacak taleplerin bir Post olup olmadığını denetlememiz gerektiğindendir. IsPostBack kontrolü sayesinde, “Post – Back mi? değil mi?” sorusuna karşılık aldığınız cevaba göre listelemeyi gerçekleştirmeniz daha sağlıklı olacaktır. Eğer Post – Back değilse sayfa ilk defa açılıyor demektir ve bu durumda listelemeyi gerçekleştirmelisiniz. Yok eğer Post – Back yapılmışsa listelemenin önceden yapıldığını bilecek ve ona göre listeleme işlemini gerçekleştirmeyeceksiniz.
Yukarıdaki hatadan kurtulmak için, ilgili veri listeleme komutlarını aşağıdaki gibi IsPostBack kontrolü içerisine almanız gerekmektedir.
if (!IsPostBack)
{
//...
}
İyi çalışmalar dilerim…


Hakikaten çok güzel anlatmışınız. Ne zamandır aradığım bir konu idi çok makbule geçti teşekkürler. 🙂
Faydalandıysanız ne mutlu 🙂
Sevgiler.