Skip to main content

ScriptManager.IsInAsyncPostBack Özelliği

Önceki yazılarımda AJAX kontrollerini kullanarak geliştirdiğiniz ASP.NET uygulamalarında yapacağınız asenkron postbacklerde sayfanın sunucu tarafında sıfırdan üretildiğinden bahsetmiştim. WebMethod'larla AJAX Sayfalarını Daha da Hızlandırın başlıklı yazımın ilk paragrafını konunun kısa detayı için okuyabilirsiniz. Aynı makalede WebMethod’ları kullanarak AJAX uygulamalarında daha hızlı işlemler gerçekleştirileceğinden bahsetmiştim. Ancak uygulama içerisinde WebMethod’lar değil de UpdatePanel’lerle asenkron işlemleri gerçekleştiriyorsanız yine uygulamanızı hızlandırmak için önemli bir ipucu var. O da ScriptManager kontrolünün IsInAsyncPostBack özelliği(property). Adından da anlaşılacağı üzere yapılan talebin asenkron postback olup olmadığı bilgisini getiriyor. Özelliğin kullanımına örnek olması açısından şöyle bir kod parçası üzerinden gidelim:

protected void Page_Load(object sender, EventArgs e)

{

    //Veritabanından son eklenen 40 haberi getir

    //Haberlere yapılan son 10 yorumu getir

}

 

protected void Button1_Click(object sender, EventArgs e)

{

    //Döviz bilgilerini getir. Bu kısım partial postbackte çalışacak

}


Bu şekilde hazırlanan bir sayfada Page_Load’da eriştiğiniz kontroller UpdatePanel’in içerisinde değilse ve UpdatePanel’in içeriğini Button1’e tıklamak güncelleyecekse yukarıda görmüş olduğunuz Page_Load metodundaki kodlar Button1’e her tıklandığında gereksiz yere çalışacaktır. Dikkat edeceğiniz üzere sadece Button1’e tıklanması yeterli değil, Page_Load’da yapılan işlemlerin de UpdatePanel içeriğiyle ilgili olmaması gerekiyor. Page_Load metodunu aşağıdaki şekilde düzenlediğinizde artık Button1 üzerinden gerçekleşen partial postback işlemlerinde sunucu tarafında daha az kod çalışacak ve sayfanın daha hızlı şekilde güncellenecektir.

protected void Page_Load(object sender, EventArgs e)

{

    if (!scriptManager1.IsInAsyncPostBack)

    {

        //ScriptManager üzerinden asenkron işlem yapılmıyorsa;

 

        //Veritabanından son eklenen 40 haberi getir

        //Haberlere yapılan son 10 yorumu getir

    }

}

ScriptManager.IsInAsyncPostBack Özelliği” hakkında 5 yorum

  1. Selam Uğur hocam,makale için öncelikle teşekkürler fakat sormak istediğim bir soru var.
    Page_Load içerisinde biz zaten önceden if (!isPostBack){ işlemler } şeklinde bir kod bloğu oluşturuyorduk.Yukarıda bahsettiğiniz olay extra ne kazandırıyor bize ? Teşekkürler iyi günler,iyi çalışmalar.

  2. ASP.NET AJAX uygulamalarında postback işlemlerini normal postback ve asenkron postback olarak ikiye ayırmak lazım. Senin bahsettiğin normal bir postback işleminde, ilk yüklemede yapılan ve VIEWSTATE’de saklanan verilerin tekrar yüklenmesini engellemeye yönelik bir kontrol. AJAX taleplerinde ise sadece UpdatePanel içeriği güncelleneceği için UpdatePanel’deki kontrolleri ilgilendirmeyen kodların çalıştırılmasına gerek yoktur. Bu nedenle sayfanın daha hızlı çalışması için sayfa içerisindeki bu tarz kod parçalarını tespit edip, yukarıdaki gibi bir if kontrolünden geçirmek, sadece asenkron olarak yapılan taleplerde bu kodların çalışmasını engelleyecektir. IsPostBack kontrolü ile bu kontrolü karıştırmamak gerekir. ScriptManager.IsInAsyncPostBack özelliği sadece ScriptManager üzerinden yapılan asenkron talepler için kullanılabilir.

Bir Cevap Yazın

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