Hoe om die waarde van gebou, geïnkripteer View State kry?
Vra
Ek moet die-base64 geënkodeerde voorstelling van die View State gryp. Dit is duidelik dat, sou dit nie beskikbaar wees tot redelik laat in die versoek lewensiklus, wat is OK.
Byvoorbeeld, as die opbrengs van die bladsy sluit in:
<input type="hidden" name="__VIEWSTATE"
id="__VIEWSTATE" value="/wEPDwUJODU0Njc5MD...==" />
Ek het 'n manier op die bediener kant ter waarde "/wEPDwUJODU0Njc5MD...=="
kry
Om te verduidelik, ek moet hierdie waarde wanneer die bladsy word gelewer, nie op PostBack. bv Ek nodig het om die View State waarde wat hy gestuur om die kliënt, nie die View State Ek kry terug van hulle weet.
Oplossing
Rex, ek vermoed dat 'n goeie plek om te begin soek is oplossings wat compress die View State - hulle gryp View State op die bediener voordat dit af is gestuur na die kliënt en gzipping dit. Dit is presies waar jy wil wees.
Ander wenke
Sien hierdie blog post waar die skrywer beskryf 'n metode vir oorheersende die verstek gedrag vir die opwekking van die View State en in plaas wys hoe om dit te red op die bediener Sessie voorwerp.
In ASP.NET 2.0, View State is gered deur 'n afstammeling van PageStatePersister klas. Hierdie klas is 'n abstrakte klas vir besparing en laai ViewsState en Daar is twee geïmplementeer nasate van hierdie klas in NET Framework, vernoem HiddenFieldPageStatePersister en SessionPageStatePersister. By verstek HiddenFieldPageStatePersister gebruik om / load View State inligting te red, maar ons kan maklik die SessionPageStatePersister om te werk en red View State in Sessie voorwerp.
Hoewel ek nie sy kode getoets het, lyk dit vir presies wys wat jy wil: 'n manier om toegang tot View State-kode te kry terwyl hy nog op die bediener, voor postback.
Ek enabled kompressie volgende soortgelyke artikels vir diegene bo gepos. Die sleutel tot die toegang tot die View State voor die aansoek stuur dit was oorheersende hierdie metode
protected override void SavePageStateToPersistenceMedium(object viewState)
Jy kan die basis metode binne hierdie ignoreer bel en dan voeg net die bykomende logika wat jy nodig het om die View State hanteer.