State Management Viewstate


Merhaba arkadaşlar;

Bu makalemizde asp.net sayfalarında belkide hakkında en çok konuşulan konulardan birtanesi “viewstate” üzerine bir paylaşımda bulunmaya çalışacağım.

Projelerimizde web formlar yani asp.net sayfaları  post back olduğunda bu web sayfalarındaki kontrollerin mevcut durumunlarını ve taşıdıkları verilerin saklanması işlemini  ViewState yapar. Daha açıklayıcı belirtecek olursak sayfalarımızdaki kontrollerin tarayıcıya gönderilirkenki değerlerine sayfanın tarayıcıdan döndüğünde de ihtiyacımız olacaktır. Fakat internetin çalışma prensipleri nedeni ile sayfa sunucuya gönderildiğinde ve client e geri geldiğinde bu değerler sıfırlanır ve burum olabildiğince sinir bozucu bir durumdur. İşzte ASP.NET web formları bu işlemler sırasındaki değerleri yukarıda belirttiğim viewstate elemanı;  input kontrolünün kontrollerin bazı propertylerini base64 koduna çevirerek saklamaktadır.

Şimdi dilerseniz basit bir örnek üzerinden viewstate nesnesini inceleyelim.

Yeni bir web site oluşturalım ve default.aspx sayfamıza bir adet textbox ve bir adet button kontrolü ekleyelim..

Default.aspx

 

Default.aspx.cs

Şimdi projemizi çalıştıralım ve textbox kontrolü içerisine birşeyler yazıp buttona tıklayalım. Button kontrolüne ne kadar click yaparsak yapalım textboxdaki değerin kaybolmadığını görmekteyiz. İşte bunu viewstate nesnesi ile yapabilmektedir.

Şimdi projemizin çalışan sayfasına sağ click yapalım view source (kaynağı görüntüle) diyelim.

Gördüğünüz gibi standart bir web sayfasına ek olarak sayfamızın kaynağında bir input olan viewstate i görmekteyiz. Sayfadaki kontollerin durumları ve taşıdıkları değerler base64 olarak bu viewstate elemanında saklanmaktadır.

Burada viewstate ile ilgili olarak birkaç önemli şeyi belirtmek isterimki viewstate de saklanan değerler sayfalar arası taşınamamaktadır. Yani bu viewstatenin ömrü sayfanın ömrü kadardır. Bir diğer husus ise viewstate nin bu mükemmel özelliği yanısıra birde dezavantajı vardır ki viewstate default olarak sayfadaki tüm kontrollerin durumlarını ve değerlerini sakladığı için bazen istenmeyen boyutlara ulaşarak sayfanın yükünü arttırabilmektedir. Fakat viewstate yönetilebilir bir özelliğe sahip olduğu için hangi projelerde, hangi sayfalarda hatta hangi kontrollerde viewstate in aktif olup olmayacağına karar verebilmekteyiz.

Eğer viewstate elemanını proje bazlı olarak kullanmamak istiyorsanız ki bu durum pekde mantıklı olmayacaktır. Bu durumda projemizde web.congif dosyasına <Pages EnableViewState=”False” /> ifadesini eklemeniz yeterli olacaktır. Eğer sayfa bazlı olarak bu engellemeyi yapmak istiyorsanız <%@ Page EnableViewState=”False” %> tanımlaması ile sayfa bazlı olarak bu engellemeyi yapmış olursunuz ki bu durumda açıkçası çok sağlıklı olmayacaktır. Fakat sayfalarımızda bulunan bazı kontroller için bu engelleme işlemini yapmak isteyebiliriz ki bu doğru bir hamle olacaktır. İşte bu durumda da ilgili kontrole <asp:kontrol EnableViewState=”False” gibi bir ekleme yapmamız yeterli olacaktır.

Bu makalemizde State Management elemanlarından biri olan Viewstate nesnesini incelemeye çalıştık. Bir sonraki makalede görüşmek üzere..

Kalın sağlıcakla.
Mahmut TEMUR
ASP.NET.TR Community Lead
http://www.mahmuttemur.com
e-posta : mahmuttemur@windowslive.com

Share Button

Comments 0

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

* Copy This Password *

* Type Or Paste Password Here *

12.605 Spam Comments Blocked so far by Spam Free Wordpress

More From: Asp.NET

DON'T MISS