Avatar billede newbieatphp Nybegynder
09. august 2012 - 21:01 Der er 4 kommentarer og
1 løsning

Refresh

Hey folkens

Jeg sidder og leger lidt med ASP .Net
Har ikke de store erfaring med det endnu, så her kommer et spørgsmål som måske er nemt at svare på :)

Jeg har en side, hvor jeg ønsker brugeren skal oprette en masse personer. Disse bliver lavet til objecter hver gang de trykker på en knap.
Når dette sker, så refresh'er siden, hvilket gør at min kollection igen bliver initialiseret.

Er der nogen mulighed for at få siden til at stoppe med at refreshe, eller kan man gøre sådan, at collection kun bliver initialiseret når man indlæser siden første gang?

Jeg har prøvet at lege med Page_Load og Page_Init uden held.
Jeg har prøvet at lave en klasse singleton, men så bliver det for alle brugere - det skal kun være for den pågældende person der lige sidder og bruger siden her og nu.

/newbieatphp
Avatar billede Panen Nybegynder
09. august 2012 - 22:13 #1
Nu kender jeg ikke vildt meget til ASP.NET, men internettet er det man kalder stateless.
Dvs. hver gang du besøger en side eller refresher, sender du en request til den pågældende webserver. Denne request er fuldstændig uafhængig af dine forrige requests.

Du requester en hjemmeside, hvorefter serveren leverer den til din browser, og her slutter dit samarbejde med webserveren.
Herefter kender hjemmesiden dig ikke mere, og venter nu bare på nye requests.
Så hver eneste gang du requester, bliver objekter af klasser skabt, data hentet ud fra databaser, funktioner kørt igennem osv.
Alt sammen forfra igen og igen :)

Derfor benytter man sig ofte af sessions til at gemme små mængder data om besøgende, som for eksempel et objekt der indeholder brugerens userid, username og email, hvis brugeren da er logget ind.
Udover dette gemmer man ellers alle disse informationer i en database, og simpelthen skaber objekter ud af data derfra, gang på gang.

Sådan fungerer det når jeg arbejder med PHP, og jeg tror det er en generel ting om webudvikling.
Avatar billede newbieatphp Nybegynder
09. august 2012 - 23:06 #2
Tak for kommentaren Panen.

Var desværre ikke det jeg ledte efter. Jeg er med på, at internettet som udgangspunkt er stateless mv.

- Pt. sidder jeg og kigger på lidt ViewState, ved ikke om det evt. kan gøre det ... andre forslag?

/newbieatphp
Avatar billede newbieatphp Nybegynder
09. august 2012 - 23:26 #3
Jeg fandt løsningen ved at bruge ViewState, så jeg lukker den her.
Avatar billede svarrer Nybegynder
10. august 2012 - 08:43 #4
Hej

For at identificere om det er "første" gang siden kaldes benyttes ofte property'en IsPostBack (findes på både aspx, og ascx elementer). dvs,. if(!IsPostBack) == første kald!

Herefter har du behov for at gemme din collection på tværs af hvert postback, og her virker viewstate(som du selv fandt frem til) ganske fint. Dog vær opmærksom på at Viewstaten bliver sendt med frem og tilbage til serveren i et hiddenfield på siden, og kan have indflydelse på performance hvis den blir for stor!.

Happy programming ;o)
Avatar billede newbieatphp Nybegynder
10. august 2012 - 13:18 #5
Hey svarrer

Fik også leget med !IsPostBack men vælger at tjekke på om min collection == null
Det giver stort set det samme.

Tak for info omkring performance :)
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

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