Asp.Net ViewState Kullanımı


Twitter'da Paylaş Favorilerime Ekle

ViewState Nedir?

Asp.Net ile hazırlanan web uygulamalarında, sayfadaki bilgiler ile işlem yapmak gerektiğinde, sayfa mutlaka sunucuya gönderilip, tekrar geri gelmektedir. Sayfanın sunucuya gidip, işlemler yapıldıktan sonra geri gelmesine PostBack denir.

PostBack sırasında, yani sayfa sunucuya gidip geri gelirken, sayfadaki kontrollere kullanıcı tarafından girilmiş olan verilerin silinmesi büyük sorun teşkil edecektir. 

Örneğin bir DropDownList kontrolüne kullanıcı istediği kadar eleman ekleyecek olsun. Her yeni eleman eklediğinde sayfa sunucuya gidecek, geri geldiğinde en son eklediği eleman DropDownList içinde dururken, daha önce eklediği eleman silinmiş olacaktır. 

Bu sorun ViewState nesnesi sayesinde ortadan kalkmaktadır. Bir sayfa sunucuya gönderilirken, sayfadaki kontrollere ait bilgiler de (içerik, genişlik, renk vb..) ViewState nesnesine eklenerek gönderilir. Sunucuda sayfa oluşturulurken ViewState içerisindeki bilgilere göre kontrollerin özellikleri ayarlanarak istemciye gönderilir. 

Web sayfası üzerinde "Kaynağı görüntüle" komutu verdiğimizde içeriği şifrelenmiş olan bu nesneyi görebiliriz.

EnableViewState Özelliği

Bazı durumlarda kontrollerdeki verilerin sunucuya taşınması istenmeyebilir. Bu durumda ilgili kontrolün EnableViewState özelliği False yapılır.

Bir örnekle anlatacak olursak, web sayfasına bir DropDownList, bir TextBox ve bir Buton koyarak, kod sayfasına şunları yazınız.

protected void Button1_Click(object sender, EventArgs e)
    {
         DropDownList1.Items.Add(TextBox1.Text);
    }

Programı çalıştırdığınızda butona her basışımızda kutuya girilen metni dropdownlist içerisine ekleyecektir. DropDownList1 kontolünün enableViewState özelliği True olduğu için sayfanın PostBack oluşu sırasında içindeki bilgiler kaybolmayacaktır.

Ardından DropDownList1 kontrolünün enableViewState özelliğini False yaparak uygulamayı tekrar çalıştırırsanız, her butona basışta yeni elemanın eklendiğini, ancak daha öncekilerin taşınamadığı için silindiğini göreceksiniz.

Not: TextBox nesnelerinin enableViewState özelliğini False yapsak da içerisindeki bilgiler taşınmaktadır.

ViewState nesnesi ile QueryString arasındaki fark: QueryString ile farklı sayfalar arasında veri taşıyabiliriz. ViewState ise farklı bir sayfaya geçildiğinde silinir, sadece o sayfa için geçerlidir.

 

viewstate nedir nasıl kullanılır, viewstate veri ekleme, asp.net viewstate işlemleri ve örnekleri, enableviewstate özelliği ne işe yarar, viewstate hatası, viewstate ile querystring farkı