OnPreRender med masterpages

Tags:    asp.net

<< < 12 > >>
Godaften

Jeg har tidliger forsøgt at få løst en "problemstilling" med at en side kun skal vise nogle data for en begrænset periode hvilket jeg fik løst, men dette var på en side uden masterpages. Da jeg nu forsøgte at ligge dette ind i masterpages oplever jeg nogle lidt underlige ting.

1. Page_Load kommer før OnPreRender?

2. Page_Load kommer jeg ind i ved debug hver gang der laves en interaktion, som knaptryk olign, men OnPreRender kommer jeg kun ind i første gang siden loades.

3. Er der en anden måde at tilgå OnPreRender end ved at override den så den får:
Fold kodeboks ind/udCSharp kode 


4. Når man tilføjer en "<meta http-equiv="refresh" content="5">" bør det så ikke også gøre at man kommer ind i page_load og prerender hver femte sekundt når den refreshes?

Er der nogen der kan forklare hvorfor det hænger sådan sammen?
For jeg synes jo OnPreRender bør komme før Page_Load, og at den skal køres hver gang selve siden skal loades.
Det skal siges de ovenstående er allesammen på ASPX-siden og ikke på masterpagen.

UPDATE UPDATE UPDATE UPDATE UPDATE UPDATE UPDATE UPDATE UPDATE UPDATE
-------------------------------------------------------------------------------------------------------------------------
Problem er fundet! Grunden til det ikke virkede med master pages var pga. jeg ikke overholdt min egen stil.
I min masterpage havde jeg en ContentPlaceHolder i mit <HEAD> -tag og <BODY> -tag, men i min side (content page) havde jeg kun en <asp:content> der passede med den fra masterpagen.
Så lavede en ny contentpage og Page_PreRender og den kommer nu ind i den hver gang.
Fold kodeboks ind/udCSharp kode 




Indlæg senest redigeret d. 18.09.2011 16:33 af Bruger #16651
14 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
præcis ganske korrekt, så derfor du skal bruge page_prerender :=)



1) http://weblogs.asp.net/ricardoperes/archive/2009/03/08/asp-net-page-events-lifecycle.aspx (quick resume, nej omvendt)

hvad vil du lave på onprerender ? Ikke fordi du bytter lidt rundt på tingene, og blot ønsker at benytte page_prerender ?




Indlæg senest redigeret d. 11.09.2011 23:39 af Bruger #10576
Benni
Tak det ser ud som om jeg har misforstået noget så, men bliver også lidt forvirret af du siger page_prerender for er det ikke netop onprerender? For den er jo overridet på min aspx side?

Men hvordan kan det så være at når jeg i page_load har noget kode der ser på isPostback og ud fra denne sætter fx "spanDivOne" til visible = isPostback så ændrer den sig ikke?
Troede det var fordi at når siden kommer til page_load så var siden renderet og derfor kan man ikke længere ændre i disse parametre for hvordan siden skal se ud?



præcis ganske korrekt, så derfor du skal bruge page_prerender :=)
Tak, men hvordan får jeg så lavet denne?
For når jeg siger override så kommer der kun OnPreRender frem :(

Og nu kan det godt være det er mig som er langsom, men det eneste jeg kan se er punkt 19. som jeg ville mene var den jeg overrider (Page.OnPreRender)? Hvor din ligger ved jeg så ikke?



Indlæg senest redigeret d. 12.09.2011 15:56 af Bruger #16651
Page_PreRender stavet helt præcis. Ved ikke hvorfor du vil override onprerender.



Benni
Der må da være noget intellisense der kan hjælpe mig?
For der jo ikke nogen lyn jeg kan vælge at fange events på.

Har lige prøvet det, men problemet er det samme. Den fanges en gang og så det ellers slut, selvom den opdaterer hver 5 sekundt. Hvordan kan det lige være?



Har aldrig set, at man kunne få intellisens ved oprettelse af funktioner. Kan du vise lidt af dit kode, så vil jeg gerne lige prøve at lure, er et par år siden jeg sidst har arbejdet i aspnet så skal lige selv have det genopfrisket :=)



Normalt når du vil reagere på et event så er der intellisense der hjælper en med det, ligesom man kan klikke en gang på en knap, vælge lyn'et ude ved properties og så vælge onclick-eventet, eller dobbeltklikke på knappen.
Ville mene det burde være muligt også i asp.net med almindelige events.

Men her er lidt kode:
MARKUP:
Fold kodeboks ind/udCSharp kode 


CODEBEHIND:
Fold kodeboks ind/udCSharp kode 


Det der sker er at man klikker på knappen, som indskriver et timestamp i URL'en (under urlparameter code), og da siden loades hver 5 sekundt (refresh oppe i headeren), ville jeg mene at OnPreRender eller page_prerender som du henviste til ville blive kaldt hver 5 sekundt når siden refresher. Jeg har udeladt din metode da den eneste forskel på den og min egen er navnet og uden override, men at den stadig kun reagerer første gang.
Når den så kommer ind i metoden så tager den dette timestamp og ser på om der er gået mere end 17 sekunder (blot til test), og hvis der er, så sendes brugeren til en url med Expired=true og når så siden loades igen (pga. redirecten til expired=true) så vises teksten med at din timeslot er udløbet og så indsættes en refresh i headeren således siden selv vil redirecte sig selv til den originale side efter 5 sekunder og man kan begynde forfra.



Altså, hvis du dropper onpagepreender og laver den om til prerender, og sætter en debug ind, kører denne så ?



har lige prøvet at lave en
protected void PreRender(object sender, EventArgs e)
og en
protected void OnPreRender med samme parametre uden at nogen af dem bliver kørt..



<< < 12 > >>
t