[ bjevta @ 01.09.2006. 19:15 ] @
Hitno mi trebaju sve moguće ideje na temu uzroka "Failed to load viewstate" greške. SVAKA ideja je dobrodošla.
[ Dejan Vesic @ 01.09.2006. 19:34 ] @
* Preveliki ViewState
* Corrupted ViewState (možda zbog nekog JavaScript procesiranja ili load not finished)
* pokvaren proksi

Da, zaboravio sam: ako imaš dinamičko dodavanje kontrola u stranicu, ili promene svojstava (dodavanje kolona datagrid kontroli), ako ne ideš svaki put istim redom, može doći do ove greške.

[Ovu poruku je menjao Dejan Vesic dana 01.09.2006. u 20:45 GMT+1]
[ bjevta @ 01.09.2006. 22:01 ] @
Hvala, Dejane

šta podrazumevaš pod "ako ne ideš svaki put istim redom,"?
[ Dejan Vesic @ 01.09.2006. 22:40 ] @
Bez obzira da li je post back ili ne, ViewState (pogotovo u 1.1) očekuje isto stablo kontrola na strani da bi "radio" kako treba.

Tu postoiji _mnogo_ više priče; ako te zaista zanima, evo odličnog linka:

http://weblogs.asp.net/infinit...y-Understanding-Viewstate.aspx
[ bjevta @ 02.09.2006. 22:11 ] @
proguglao sam malo i uhvatila me muka: sve što imam na formi koja "failed to load viewstate" je već pobrojano kao situacije u kojima se dotični exception javlja: grid, check box u gridu, filtriranje podataka pre prikaza u gridu, show/hide kontrola posle postback-a, petljanje po web.config-u, itd. Dodatno, upotrebio sam Atlas i Blowery u web aplikaciji. Da bude još crnje, nikako ne mogu da reprodukujem situaciju na development mašini.

Međutim, izgleda da je u pitanju i to što neki korisnici moje web aplikacije koriste "Back" dugme za šetanje kroz forme za unos podataka. Back na statičkom web sajtu i back u web aplikaciji nije isto. Danas sam se čuo telefonom sa jednim od njih i obavestio ga da NE koristi back u browser-u već dugme "Nazad" koje radi Response.Redirect. Inače, problem se javlja samo kod 2 korisnika, za sada.

ima li načina da "uhvatim" taj famozni Back i da, kada korisnik pritisne Back dugme, odradim ono što ja hoću?
[ Dejan Vesic @ 02.09.2006. 22:35 ] @
Na žalost, ne postoji kulturan način da sprečiš korisnika da koristi back button.

Postoje prljavštine tipa: ako imaš Stranu 1 i Stranu 2, a na Strani 2 želiš da zabraniš back, onda ovo odradiš na Strani 1:

Code:

<script>
if(window.history.forward(1) != null)
                 window.history.forward(1);
</script>


ali to ne pomaže dobrom user experience.

Ono što možda pomaže je da tvoju aplikaciju lansiraš iz JavaScripta, sa window.open i da kompletno ukloniš toolbar kroz parametre od window.open.

Time je korisnik osuđen na kontrole koje mu ti daješ. Dodatno, možeš čak blokirati i backspace taster javascriptom:

Code:

<script>
function KeyCache() {
  if (window.event && window.event.keyCode == 8) {
    window.event.keyCode = 123; //Replaces with F12 button. (Does nothing in IE)
  }
}
document.onkeydown=KeyCache();
</script>


Ono što ja najčešće primenjujem je pametni workflow; zamisli da svaka od stranica obrađuje jedno od stanja procesa. Sad, trenutno stanje držim u session varijabli na serveru. Ako se desi da se pozove stranica a da je tekuće stanje namenjeno ne toj nego nekog drugoj, uradim prost Server.Transfer na stanicu koja je zadužena za obradu.

I tu treba razno-raznog žongliranja, ali ga barem odradim na serveru i ne patim se sa client-side svemogućim problemima.
[ bunker @ 04.09.2006. 12:41 ] @
Ako otvoris aplikaciju u ful skrinu, bez tulbaraa, hendluj Alt + <- i Alt + ->, forward i backward.