Avatar billede bongo20 Nybegynder
24. april 2006 - 10:00 Der 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.

sig til hvis det er uforståeligt

:-)
Avatar billede mikkel_sommer Nybegynder
24. april 2006 - 11:08 #1
Kan du ikke sætte instantieringen af din usercontrol i en "if not postback"?
Avatar billede snepnet Nybegynder
24. april 2006 - 12:00 #2
hvis du indsæter den dynamisk, skal du instantiere og indsætte hver gang.
mvh
Avatar billede bongo20 Nybegynder
24. april 2006 - 12:37 #3
Det gør jeg ikke snepnet.. jeg sætter den ind på aspx siden sådan her:

<UserControl:UserControl1 runat="server" id="UserControl1" />

men de parametre der skal bruges skal jo sættes et sted.
UserControl1.Category = Category;
Det ville jeg gerne gøre undgå at gøre ved postback.
Avatar billede snepnet Nybegynder
24. april 2006 - 13:34 #4
hvis du ikke vil gøre det programmatisk - kan du gøre det deklrativt, såfremt Category er en public property:

<UserControl:UserControl1 runat="server" id="UserControl1" Category="..." />

mvh
Avatar billede bongo20 Nybegynder
24. april 2006 - 13:48 #5
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?


:-)
Avatar billede snepnet Nybegynder
24. april 2006 - 14:50 #6
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
Avatar billede bongo20 Nybegynder
25. april 2006 - 09:20 #7
Jeg har nu læst lidt op på outputcaching og det lyder da som noget jeg skal i gang med.
Hvis jeg gør sådan  her:

<%@ OutputCache Duration="10" VaryByParam="none" %>

så cacher den ascx'en i 10 sekunder, men hvordan styrer jeg nu mine properties?
UserControl1.Category = Category;

Det virker som om den mister værdien af de satte properties efter de 10 sekunder.
Ved du noget om det?

:o)
Avatar billede snepnet Nybegynder
25. april 2006 - 09:41 #8
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
Avatar billede bongo20 Nybegynder
25. april 2006 - 10:37 #9
er der noget forgjort i at gøre sådan her:

if (UserControl1 != null)
{
    UserControl1.Category = Category;
}

Det ser udmiddelbart ud til at virke...
Avatar billede snepnet Nybegynder
25. april 2006 - 10:56 #10
nej det er der bestemt ikke noget forgjort i.
mvh
Avatar billede bongo20 Nybegynder
25. april 2006 - 14:03 #11
tak for hjælpen,.. igen :-)

smider du et svar?
Avatar billede snepnet Nybegynder
25. april 2006 - 15:08 #12
kommer her :o)
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