24. april 2006 - 10:00Der er
11 kommentarer og 1 løsning
usercontrols og postback
Hej
Jeg har en usercontrol som jeg gerne vil undgå bliver reloadet ved postback. Jeg får nogle fejl i selve usercontrollen hvis ikke jeg instantierer den ved postback.
Kan jeg undgå at den bliver instantieret hver gang, men bare har det indhold jeg oprindeligt havde i den.
Jeg vil gerne gøre det programmatisk.. Jeg vil bare gerne bevare min usercontrols indhold uden at skulle initialisere den hver gang. Når jeg sætter den ind sådan her: <UserControl:UserControl1 runat="server" id="UserControl1" /> så instantierer jeg den vel også ved postback,.ik?
du bliver som udgangspunkt nødt til at instantiere dine kontroller hver gang... objekterne bliver nedlagt når sidens kode er proccesseret, og html'en er skubbet ud til klienten. om du selv gør det i koden - eller om frameworket sikrer at det sker fordi du har skrevet noget aspx-kode i en aspx-fil er af mindre betydning. hvis du har noget tilstand på kontrollen du ønsker at bevare på tværs af postback - må du benytte de eksisterende teknikker til det: viewstate, controlstate (hvis du benytter 2.0), session, application, profiles (hvis du bruger 2.0) mv. desuden lyder det som om outputcaching også kunne være en mulighed for dig. mvh
outputcaching resulterer i et statisk dump af din html, som blot bliver vist til klienten hvis det eksisterer. i din kode skal du som nævnt fortsat selv sørge for at sætte de nødvendige variable hver gang. du kan dog pakke det ind i din kontrol som en viewstate-property (altså eksplicit gemme det i viewstate, og tage værdien derfra hvis den eksisterer). du tilgår viewstate som du tilgår session: ViewState["category"] = someVar; // someVar skal være serialiserbar du kan self. også blot lægge det i querystring, session, application ell. afhængig af betydningen af din variabel. mvh
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.