hayal et, tasarla, hayata geçir



UserControl, UpdatePanel ve RegisterPostBack Sorunu

ASP.NET AJAX ile gelen sorunlardan biri de UpdatePanel içerisinde bazı durumlarda ajax postback yerine full postback yapılması zorunluluğudur. Dosya yükleme veya Response.Write işlemlerinde UpdatePanel bize fazla destek olmamaktadır. Bu gibi durumlarda RegisterPostBack metodu yardımımıza koşar ve normal şartlar altında sunucuya asenkron postback yapması gereken kontrolün UpdatePanel içerisinde olsa bile full postback yapmasını sağlar.



ScriptManager.GetCurrent(Page).RegisterPostBackControl(Button1);

İlk başta harika çalışan bu metodun bir açığı vardır. Eğer FileUpload gibi bir kontrolümüz UserControl içerisinde bulunduğunda ve bu UserControl’ün görünürlüğü (visible) ilk başta kapalı olduğunda daha sonra açılsa bile ScriptManager kendi insiyatifini kullanarak button un full postback yapmasını sağlayacak script’i sayfaya render etmemektedir. Bu soruna karşı ScriptManager’ın render ettiği script’i elle oluşturmaktan, Page_LifeCycle’ın değişik aşamalarında metodu çalıştırmaya kadar bir çok çözüm denemiş olsam da hepsinde bazı sorunlar oluştu. En sonunda aşağıdaki basit ama etkili çözüm sayesinde sonuca ulaştım;


Yukarıda yaptığımız değişiklik aslında .NET tarafındaki visible property sini tercih etmeyerek, css ile UserControl’ün görünürlüğünü değiştirmektir. Böylece ScriptManager için UserControl artık görünmez olmadığından arzu ettiğimiz script sayfaya render olacaktır.
Fakat bu çözümün bir dezavantajı da tabi ki UserControl’ün oluşturduğu html çıktısının devamlı render edilmesidir.



Yanıtla



SON YAZILARIM

genel
Microsoft Türkiye Açık Akademi

Microsoft tarafından Türkiye'deki ilk ücretsiz online yazılım okulu Açık Akademi açıldı....

genel
Windows Azure Blob Arayüzü

Bir önceki yazımızda Blob servisine kısa bir giriş yapmıştık. Yazıyı okumak isterseniz

genel
Windows Azure Blob Servisi

Microsoft'un bulut mimarisi Windows Azure platformu üzerinde veri altyapısı alışıla gelmiş yöntemlerden...