[ azzpoz @ 22.12.2014. 22:29 ] @
Da li neko ukratko može da objasni šta je ViewState i kada se koristi u praksi(primjer neki i sl.)
Zbunjen sam objašnjenjima s interneta i u kombinaciji if (!IsPostBack){...}
[ Shadowed @ 23.12.2014. 10:10 ] @
ViewState sluzi da se neki podatak sacuva izmedju dva poziva strane.
Razlog za njegovo postojanje je to sto, nakon sto se stranica jednom posalje, nemamo nikakvu vezu sa njom pa moramo nekako da sacuvamo stanje koje smo imali na serveru da bismo mogli da ga rekonstruisemo kada se strana ponovo ucita (ViewState je jedno od resenja tog problema).

Primer:
Imas Label-u: <asp:Label Text="Primer" />
I imas neki Button na ciji klik hoces da uradis nesto sa tim tekstom.
Kada se stranica prvi put ucita, ta labela ce se renderovati u.. ne secam se, recimo <span>Primer</span> i to ce se poslati klijentu. Problem je u tome da mi vise nemamo nikakvu informaciju o Labeli. Ne mozemo mi span da konvertujemo nazad u labelu iz (vise razloga, pre svega, nece nam na server ni doci taj span, drugo i da dodje, ne znamo da li je on bio labela ili plain html itd.).
Zbog toga postoji jedno <input type="hidden" name="__VIEWSTATE" /> polje u kojem se smestaju informacije o toj labeli pa kada se uradi ponovno ucitavanje strane, server iz tog podatka rekonstruise Label objekat.
Treba imati na umu da se <input> polja salju samo kada se uradi submit forme, pa tako i ViewState. Da li je to slucaj se proverava sa Page.IsPostback.

Problem sa ViewState-om je sto ukoliko imas mnogo podataka koji se cuvaju u njemu povecavas kolicinu podataka koje setas izmedju klijenta i servera pa to moze da uspori ucitavanje strana, trosi serverske resurse i protok.
[ azzpoz @ 23.12.2014. 16:19 ] @
Citat:
Shadowed: ViewState sluzi da se neki podatak sacuva izmedju dva poziva strane.
Razlog za njegovo postojanje je to sto, nakon sto se stranica jednom posalje, nemamo nikakvu vezu sa njom pa moramo nekako da sacuvamo stanje koje smo imali na serveru da bismo mogli da ga rekonstruisemo kada se strana ponovo ucita (ViewState je jedno od resenja tog problema).

Primer:
Imas Label-u: <asp:Label Text="Primer" />
I imas neki Button na ciji klik hoces da uradis nesto sa tim tekstom.
Kada se stranica prvi put ucita, ta labela ce se renderovati u.. ne secam se, recimo <span>Primer</span> i to ce se poslati klijentu. Problem je u tome da mi vise nemamo nikakvu informaciju o Labeli. Ne mozemo mi span da konvertujemo nazad u labelu iz (vise razloga, pre svega, nece nam na server ni doci taj span, drugo i da dodje, ne znamo da li je on bio labela ili plain html itd.).
Zbog toga postoji jedno <input type="hidden" name="__VIEWSTATE" /> polje u kojem se smestaju informacije o toj labeli pa kada se uradi ponovno ucitavanje strane, server iz tog podatka rekonstruise Label objekat.
Treba imati na umu da se <input> polja salju samo kada se uradi submit forme, pa tako i ViewState. Da li je to slucaj se proverava sa Page.IsPostback.

Problem sa ViewState-om je sto ukoliko imas mnogo podataka koji se cuvaju u njemu povecavas kolicinu podataka koje setas izmedju klijenta i servera pa to moze da uspori ucitavanje strana, trosi serverske resurse i protok.



Da li npr. View State koristimo, ako se korisnik želi registrovati na našu stranicu i "slučajno" klikne na button(back/submit i sl.) mi sačuvamo sva polja(textboxove npr.) u ViewState-u i nakon što korisnik želi nastaviti proces registracije, učitaju se podaci koji su do tada bili ispunjeni u textbox-ovima(tj. nastavi gdje je stao)???
[ dusans @ 23.12.2014. 18:35 ] @
Ne, za to što si opisao se koristi Session.
[ azzpoz @ 23.12.2014. 20:30 ] @
Citat:
dusans: Ne, za to što si opisao se koristi Session.


Da li je, u slučaju registracije korisnika(nešto pogriješi), klikne submit, stranica ne refreshuje podatke/ne briše ih, nego čuva prethodno stanje registracije?
Da li je dovoljno samo uključiti ViewState, ili ga eksplicitno navodimo + šta će pohranjivati?
Do kada vrijedi ViewState, samo dok smo na toj WebFormi(stranici/page) ili?
[ dusans @ 23.12.2014. 21:38 ] @
ViewState se formira prilikom prvog poziva stranici a kasnije se učitava i updejtuje prilikom postback-ova.
Kada uradiš refresh stranice, ViewState kreće iz početka kao da si prvi put pozvao stranicu.

ViewState je jedan od ključnih delova statefull mehanizma Asp.Net stranica, i koriste ga gotovo sve serverske kontrole.
Da bi shvatio šta, ko, kada, kako i zašto koristi ViewState, moraš razumeti na prvom mestu
kako radi sirovi web kao stateless protokol i kako asp.net pravi na toj osnovi nešto što je "statefull".
Mehanizam više tehničke prirode i nije uopšte "prost" da bi se mogao napisati ili shvatiti u par rečenica.
U globalu, radi ono što ti je Shadowed napisao.
Za početak: https://www.google.rs/?#q=asp.net+page+life+cycle

Kada shvatiš "big picture", shvatićeš i svrhu ViewState-a.