2011-01-28 9 views
5

Bir form gönderdiğimizde, tüm alan değerleri sunucuya gönderilir ve Request nesnesinde kullanılabilir. İdeal olarak, değerleri okumak ve onunla herhangi bir işlem gerçekleştirmek için aynı nesneyi kullanabilir.İstek nesnesi içindeki tüm alan değerlerine sahip olduğunda neden ViewState gereklidir?

Ardından, alanların değerlerini tutmak için neden ViewState'a ihtiyacımız var?

Lütfen cehaletimi affedersiniz, sanırım burada bazen çok açık bir şekilde eksikim ama ne olduğunu anlayamıyorum.

cevap

2

V4Vendetta gereğince, kendi denetimleri hakkında ViewState devre dışı bırakabilir, ancak o zaman örneğin elle "ASP klasik tarzı" geliştirmek gerekir Kullanıcıyı sayfada tutmanız gerekiyorsa ve bir form doğrulamadan geçtiyse, başlangıç ​​değerlerini kullanıcının en son ayarladığı şeye geri getirmeniz gerekir, aksi takdirde kullanıcı verileri kaybolacaktır.

ASP Net denetimleri, bu bilgileri ViewState'de saklayarak bunu biraz daha zarif bir şekilde ele alır. Ancak, ya kontrolü tekrar işlemeye gerek duymazsanız veya kontrol verilerini, önceki durumuna (örneğin, disk belleği olan bir ızgaraya) gerek kalmadan, her zaman taze hale getirirseniz, kontrol için ViewState'i devre dışı bırakmak, bant genişliğini koruyacaktır.

ViewState here'un iyi bir açıklaması.

+0

Burada başka bir iyi makaleyi görüntüle: View State http://aspnetresources.com/articles/ViewState –

1

Viewstate, sunucuya gidiş-dönüş arasında geçerli sayfa durumunu korumak için kullanılan ASP.NET durum yönetimi tekniğidir. Bu özelliği istemiyorsanız, sayfalarınızı nasıl uyguladığınıza bağlı olarak devre dışı bırakabilirsiniz.

<%@ Page EnableViewState=”false”%> 
+0

Ancak şunu anlıyorum, sadece ilk olarak neden tanıtıldığını anlamaya çalışıyorum. ViewState kullanımı zorunlu olduğunda herhangi bir özel durum var mı? –

+0

Postback'ler için durumları korumak için, değerler başka bir şekilde saklanmalıdır, bu nedenle her zaman sayfanın yüklenmesi için ayarlamanız gerekir – V4Vendetta

4

ViewState'in ASP.Net'te tanıtılmasının en açık nedeni, winform benzeri bir programlama modeline (olaylara dayalı olarak) izin vermek idi.

Eğer bir sunucu tarafı denetimi (örneğin bir metin kutusu), tarayıcıya geri gönderilir html sayfası içerir varsa:

  • viewstate => bu değer kodlanmış kontrolün başlangıç ​​değeri, tarayıcı/kullanıcı
  • kontrol kendisi tarafından değiştirilemez => tarayıcı/kullanım formu sunucuya geri gönderilir durumuna

değiştirebilir, ASP.Net yatan motor karşılaştıracaktır depolanan ilk değer ile kontrol yeni değeri ViewState'de. Aynı değilse, OnChange olayı tetiklenir ve bunu bir winform uygulamasında yapacağınız gibi ekleyebilirsiniz.

+0

Diğer olaylar hakkında ne var? Düğme tıklamaları gibi, fare tıklaması/hareketi? asp.net çerçevesinin bu olayları nasıl algıladığını söyleyebilir misiniz? –

İlgili konular