15. december 2003 - 09:43Der er
14 kommentarer og 1 løsning
Bevare objekt ved postback
Hej..
Jeg har et serverside objekt i min aspx.cs klasse. Objektet er en arraylist, som jeg gerne vil beholde. Men når jeg trykker på min button, som skal gøre ting ved dette array, får jeg at vide der er en null exception.
Kan det passe at objektet dør ved postback, og hvordan fortæller jeg at det ikke skal ske.. Det skal bare leve på serverside, og være der igen, når jeg postback'er
ja... men kan det ikke gøre det pr. default... Det er jo planen det skal virke som en applikation, og når jeg trykker på en knap i min applikation forventer jeg lidt at mine objekter der var oprettet lige inden jeg trykker på knappen er der stadig... men sådan er det åbenbart ikke... ;-)
Hvis du laver din objekter implementere ISerializable, kan du gemme dem i ViewState. F.eks. i C# ViewState["MyObject"] = myObject;
eller i VB
ViewState("MyObject") = myObject
For at kunne gemme i viewstate, skal objektet kunne repræsenteres som en streng. Jeg gør oftet det, at jeg gemmer et ID på objektet og henter det ud af mit datastore efter postback.
Ja. Jeg havde vist ikke læst dit spm godt nok :) Havde ikke set ArrayList'en. Hvis du vil gøre det på den måde, må det blive med session, som cyberfessor skriver.
Jeg har også brugt session... Men jeg synes stadig det er fjollet den ikke selv gør det.. Når nu de gør så meget ud af at sige at det objektorienterede er kommet på "nettet".. :-) Så burde de lave en automatisk viewstate med de objekter man bruger på sin side..
Men det virker fint med session, så cyberfessor... Smid et svar.. :-)
Nej, det er bedst som det virker nu. Alt der gemmes i ViewState sendes til klienten, hvilket dermed øger båndbreddeforbruget. Session kan man ikke altid regne med, idet den afhænger af cookies (der er dog mulighed for at gå over til at gemme sessionid i querystring).
ja... ok... Men det vil så sige.. at når jeg gerne vil gemme mit SERVERSIDE objekt.. og brugeren ikke har cookies aktiveret.. så er jeg lidt fucked... Men sådan er det jo... Men der kunne jo godt sendes et id med som blev sendt tilbage til serveren og genkendte klienten, uden at sende dataen til klienten...
Det burde vel ikke være nødvendigt med al data.. Der er en del der kun bruges på serveren...
anhansen>> tja.. jeg ved ikke om det er mærkelig eller ej. Du kan evt. læse lidt om det state-less miljø som websider nu engang er. Efter at webserveren har processeret et webrequest glemmer den alt om det. Hvis serveren automatisk skulle holde på alle de objecter der bliver brugt, så vil der ikke gå mere end 4 sekunder før den går i knæ på grund af manglende hukommelse.
nej.. det er også rigtigt... Det er nok meget fornuftigt når alt kommer til alt... Og der er trods alt mulighed for at gemme noget hvis man gerne vil...
Har du set sprsmlet med point til dig?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.