Avatar billede jpi Mester
12. november 2006 - 01:23 Der er 13 kommentarer og
2 løsninger

Bevare objekter

Jeg har en klasse som jeg skal ændre indhoold af på forskellige websider.
Side1 opretter et objekt og tildeler nogle værdier. Derefter ledes man videre til side2, hvor man indtaster nogle flere værdier til objektet.
Er der er smartere måde at bevare objektet på end at gemme det i en session-variabel hele tiden ?

FDet er ASP.NET v. 2
Avatar billede arne_v Ekspert
12. november 2006 - 05:53 #1
hvordan skal de forskellige requests sammenknyttes ?

samme session ? i så dald er session objekt jo nok ikke helt forkert !
Avatar billede jpi Mester
12. november 2006 - 11:46 #2
Det er en bruger der skal udfylde en del oplysninger, som der ikke er plads til på en enkelt side. Derudover er nogle af felterne afhængige af tidligere valg, så det er oplagt at lægge det på forskellige sider. Siderne udfyldes efter hinanden og til sidst skal data gemmes i database.

Var det oplysninger nok ?

Tænkte at det kunne være Microsoft havde funde på noget smart, der kunne kompensere for at http er state-less, uden at man selv skulle programmere det...
Avatar billede snepnet Nybegynder
12. november 2006 - 12:51 #3
Hvis du benytter ASP.NET 2.0 kan du benytte den kontrol der hedder Wizard - Den tilbyder den slags.
Mvh
Avatar billede snepnet Nybegynder
12. november 2006 - 12:52 #4
Og kompensationen for stateless i ASP.NET hedder ViewState og benyttes af de medfølgende kontroller.
I ASP.NET 2.0 findes der af samme skuffe ControlState.
Mvh
Avatar billede jpi Mester
13. november 2006 - 17:29 #5
Hvordan skal det bruges ?

Eksempel: Under Pageload oprettes et objekt med nogle parametre. Når der trykkes på en knap der skal sætte et par ekstra parametre har den jo glemt alt om objektet. Hvordan bruger man så viewstate eller Controlstate til at den husker objektet ?
Eller skal man slutte alle procedurer med at gemme objektet i en sesseionvariable og starte alle med at hente den ?
Avatar billede snepnet Nybegynder
13. november 2006 - 20:06 #6
Du skriver til ViewState på samme måde som til session:
ViewState["someName"] = someObject;
og du henter også på samme måde.

Det kræves at objektet kan serialiseres, hvilket du kan fikse ved at dekorere klassen med
[Serializable]

Men du kan benytte en wizard kontrol hvis det er sådan en standard wizard agtig ting du skal lave.

Og ... Du kan self. også benytte session... Det kommer an på hvor du helst vil skabe overhead (ram på serveren - eller båndbredde).

Mvh
Avatar billede jpi Mester
13. november 2006 - 20:13 #7
OK. Det er nok ikke så mange samtidige brugere, så det kunne godt blive i sessions. Er der andre fordele/ulemper ved sessions vs. viewstate ?

Og som jeg ser det så skal man altså læse/skrive til viewstate hver gang man starter/slutter en procedure/function ?
Avatar billede arne_v Ekspert
14. november 2006 - 03:24 #8
bemærk at session og viewstate må opføre sig lidt forskelligt ved 2 samtidigt åbne
browser vinduer til dine sider, men der er nok størst sandsynlighed for at du ønsker
viewstate funktionaliteten
Avatar billede jpi Mester
24. november 2006 - 18:21 #9
arne_v: Hvad mener du med at de må opføre sig forskelligt ?
Avatar billede arne_v Ekspert
24. november 2006 - 23:07 #10
som jeg forstår det så fungerer viewstate ved at det bliver gemt data i
et hidden field altså client side

mens session jo gemmes server side

det betyder at har du to åbne browser vinduer på samme site, så kan de have
forskellige data i viewstate men vil altid have ens data i session
Avatar billede jpi Mester
27. november 2006 - 08:01 #11
Men sessions bliver jo gemt "pr. browervindue der er åbent", så hvis man gemmer data i f.eks både viewstate og i session, så burde de da være ens, og begge dele er da uafhængige af andre browservinduer/sessions. Jeg er ikke helt med på hvad du mener.
Avatar billede arne_v Ekspert
28. november 2006 - 05:11 #12
nej

sessions maintained via cookie (hvilket vel er mindst 95% idag) er per browser
instans

og de mest gængse browsere idag understøtter multiple vinduer i en enkelt instans
Avatar billede jpi Mester
05. februar 2007 - 21:34 #13
OK... Som jeg ser det er der ikke umiddelbart en smartere måde at gemme objekter på end sessions eller viewstate.

Men tak alligevel, for nyttige oplysninger. Smid et svar begge to, så kan i dele point
Avatar billede arne_v Ekspert
05. februar 2007 - 21:47 #14
ok
Avatar billede snepnet Nybegynder
08. februar 2007 - 22:16 #15
Og et svar her.
Mvh
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester