2009-03-09 8 views
1

üzerine silinir. BasePage, get/set'in ViewState topluluğundaki iki farklı öğeden yapacağı şekilde uygulanan iki özelliğe sahiptir (bu, BasePage'deki this.ViewState ["Year"]).Asp.net BasePage Özellikleri İşte benim kurulum temelleri olan PostBack

Daha sonra BasePage'den miras alan başka bir sınıfım var, buna SpecificBasePage adını verelim.

Son olarak, SpecificBasePage öğelerini devralan bir aspx sayfam var.

Kırılma noktaları ekledim ve kodumda çok fazla adım attım ve ilk sayfa yüklemesinde her iki görünüm durum özelliğinin değerlerin atandığını ve değerlerin ilk sayfa yükleme ömrü boyunca devam ettiğini fark ettim.

Sayfa geri yüklendiğinde, Page_Load olayı ve diğer olay işleyicileri sırasında (ViewState yüklenmesi gerektiğinde), her iki özellik de boş değer döndürür. Bunu denetlemek.ViewState.Count, koleksiyonda sıfır nesne olduğunu gösterir.

ViewState'i etkileyecek ve bu davranışa neden olacak bir yere sahip olabileceğimi düşünen biri var mı?

--Addition Kodumun bir kısmına ayırdım. İlk yüklemede OnInit'teki viewtate özellik değerlerini veriyorum, bunu OnLoad'a taşıdığımda değerlerin geri gönderim boyunca devam ettiğini buldum. Eklenen görünüm durumu değerleri ilk sayfa yaşam döngüsü boyunca devam etseler bile, bunlar geri postada bırakılıyor?

cevap

4

sayfa

Ayrıca uygulamanın web.config devre dışı bırakılmış olabilir aspx üzerinde EnableViewState = false sahip olabilir, hatta elemana genel bilgisayar için.

Güncelleştirme 1: Asp.net yaşam döngüsünde, ViewState, Init'ten sonra ve Load more info'dan önce yüklenir. Init'teki herhangi bir şey gibi görün, sayfanın beyanının bir parçası olarak kabul edilir. Daha sonra asp.net viewtate'ı yükleyecek ve bundan sonra da değişiklikleri viewtate'a kadar izlemeye başlayacak. Bundan sonra asp.net, viewtate ve değiştirilen bilgilerdeki ilk bilgiler arasında herhangi bir fark görecektir. Bu nedenle, yüklemeye devam etmek problemi ortadan kaldırır (ilk durum olmadığından ve görünüm durumuna getirdiğiniz her şey yeni durumdur) . Yukarıdaki linke Gönderen: StateBag sınıfı sadece TrackViewState sonra üyelerinin değişiklikleri izler çünkü

"nedenidir() yöntemi çağrılan edilmiş bir StateBag varsa Yani, herhangi vb. TrackViewState (daha önce yapılan tüm eklemeler ya da değişiklikler) olmayacaktır yapılır kaydedildiğinde SaveViewState() metodu çağrılır. olur TrackViewState() yöntem başlatma aşamasının sonunda denir örnekleme aşamasından sonra.özellikleri grubu olarak ViewState yazılır Bu nedenle, örnekleme ilk özelliği atamaları ise aşama erişimcileri-edilir , görünüm durumu aşamasında kaydetmek içinde SaveViewState() metodu çağrı sırasında kalıcı olmayan için TrackViewState() yöntemi çağrılan olmak için henüz." Ben kısmen belirtildiği gibi

+0

'a bir bakın. Yanıt için teşekkürler. EnableViewState için kapsamlı bir arama yaptım ve birkaç denetime girdim, ancak bu sayfada yok ve web.config dosyasında yok – spilliton

0

Ben görünüşe sayfa yüklemesinden önce görünümü devlet hiçbir şey yapamazsınız, sonradan eklenen, RAĞMEN Asp.net kokan Bir hata atmak ve ilk sayfa yaşam döngüsü boyunca görüş durumunda olacak, bu persis DEĞİL Sonraki geri dönüşün yaşam döngüsü üzerinde.

0

Size ViewState değerlerini ayarladığınız yere bakın. Muhtemelen OnUnload olayınızı daraltın ve yalnızca değerlerin gerçekten ayarlandığından emin olmak için ViewState nesnesini inceleyin.