Jak uzyskać wartość zbudowany zakodowany ViewState?

głosy
22

Trzeba chwycić reprezentacji base64 kodowane z ViewState. Oczywiście nie będzie dostępny aż do dość późno w cyklu żądanie, co jest OK.

Na przykład, jeśli wyjście stronie obejmuje:

<input type=hidden name=__VIEWSTATE 
  id=__VIEWSTATE value=/wEPDwUJODU0Njc5MD...== />

Muszę sposób po stronie serwera, aby uzyskać wartość /wEPDwUJODU0Njc5MD...==

Aby wyjaśnić, muszę tę wartość, gdy strona jest renderowany, a nie na odświeżenie strony. np muszę znać wartość ViewState, który jest wysyłany do klienta, a nie stan wyświetlania Dostaję od nich z powrotem.

Utwórz 04/08/2008 o 04:59
źródło użytkownik
W innych językach...                            


3 odpowiedzi

głosy
9

Rex, podejrzewam dobrym miejscem do rozpoczęcia poszukiwań jest rozwiązań, które skompresować ViewState - oni chwytając ViewState na serwerze, zanim zostanie wysłany do klienta i gzipping go. To jest dokładnie tam, gdzie chcesz być.

Odpowiedział 04/08/2008 o 09:04
źródło użytkownik

głosy
3

Zobacz ten wpis na blogu , w którym autor opisuje metodę przesłanianie domyślne zachowanie dla generowania ViewState a zamiast tego pokazuje jak zapisać go na serwer obiektu Session.

W ASP.NET 2.0, ViewState jest zapisywany przez potomka klasy PageStatePersister. Ta klasa jest klasą abstrakcyjną do zapisywania i wczytywania ViewsState i istnieją dwa realizowane potomkami tej klasy w .NET Framework, o nazwie HiddenFieldPageStatePersister i SessionPageStatePersister. Domyślnie HiddenFieldPageStatePersister służy do zapisu / odczytu ViewState informacje, ale możemy łatwo uzyskać SessionPageStatePersister do pracy i zaoszczędzić ViewState w obiekcie Session.

Chociaż nie testować swój kod, wydaje się, aby zobaczyć dokładnie, co chcesz: sposób, aby uzyskać dostęp do kodu viewstate jednocześnie na serwerze, przed odświeżenie strony.

Odpowiedział 04/08/2008 o 10:04
źródło użytkownik

głosy
2

Włączyłem kompresję według podobnych artykułów do tych, napisanych powyżej. Kluczem do dostępu do ViewState zanim aplikacja wysyła ono nadrzędne tej metody;

protected override void SavePageStateToPersistenceMedium(object viewState)

Można wywołać metodę bazową w tym ręcznym, a następnie dodać cokolwiek dodatkowa logika można wymagać, aby obsłużyć ViewState.

Odpowiedział 05/08/2008 o 11:07
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more