analiz 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

ajax
UserControl, UpdatePanel ve RegisterPostBack Sorunu

ASP.NET AJAX ile gelen sorunlardan biri de UpdatePanel içerisinde bazı durumlarda ajax postback yerine full...

yazılım
Ofis Savaşları

IT'ciler ile satış takımı arasında hep bir anlaşmazlık vardır. Genelde satış takımının...

yazılım
Çevre Faktörü

Yazılım projelerinin en önemli süreci tabi ki geliştirme aşamasıdır. Uygulama yazılır, yazıldıkça...