ændre PostBackURL

Tags:    asp.net

Hejsa allesammen

Jeg har på min side lavet en side med kontaktoplysninger, hvor man skal aktivt gøre noget for at få mine kontaktoplysninger.
Det sker ved at knappen har en PostBackUrl med en foruddefineret kode der gør at OnPreRender læser den denne og viser mine kontaktoplysninger.
Jeg har nu lyst til at lave det en lille smule mere avanceret og selv ændre denne postbackurl på knappen, men jeg kan ikke få det til at virke.

Min kode som den ser ud nu med den statiske PostbackURL:

Fold kodeboks ind/udCSharp kode 


Fold kodeboks ind/udCSharp kode 


Mit problem er nu at jeg ikke ved hvordan jeg kan få lavet denne PostBackURL om INDEN den sendes afsted?
Jeg har prøvet at på btnKontaktInfo_Click -metoden at finde button-elementet og sætter PostBackUrl'en, men problemet er at så reageres der først 2-3 gang på den i stedet for i samme click.

Nogen der har en ide til hvordan det kan gøres?



2 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Du kan ikke ændre i din PostBackUrl Real-time og få det eksekveret samtidig. Det der sker når du trykker knappen er du ryger i "backend" hvor du så retter i din PostBackUrl. Det medvirker så at knappen først skal renders, hvor det tager effekt (Altså næste gang du trykker). Det du ønsker er at rette i kontrollen inden den laver postback, hvilket ikke decideret er en god ide.

Men kan ikke gemmenskue hvorfor det er nødvendigt?
Hvis du alligevel er igang med at lave en "grim" løsning, kan du jo bare Redirecte i dit postback i dit click event, hvorefter du får din ønskede effekt :)



EDIT: Har nu fået dette løst, dog uden at få dette lagt op, men vil blot dele min "succes" og hvordan jeg har fået det løst så det måske kan hjælpe andre.

Pointen er at mine kontaktoplysninger er meget følsomme data og derfor skal brugeren ALTID gøre noget aktivt for at kunne se mine data og disse skal altid have en udløbsdato således at de ikke vil kunne blive bookmarked og lignende. Måske en fjollet tanke, men dette er mit ønske som jeg nu har fået løst.

Fold kodeboks ind/udHTML kode 

Introteksten er til at fortælle at det her er muligt at få mine kontaktoplysninger på siden her.
Invisible er teksten hvori mine kontaktoplysninger kan ses.
Visible er samme forklaring som ovenover om at mine data er følsomme og derfor skal man aktiv bede om dem.
Timeout er en tekst der fortæller at dataene er løbet ud og du skal bede om dem igen.

For at kunne ændre hvilket der er synligt og ikke skal der rettes i OnPreRenderComplete som følgende gør:
Fold kodeboks ind/udCSharp kode 


udover dette har jeg sat en timer på siden der gør at den hele tiden opdaterer sig selv. Dette er fordi at når den selv opdaterer sig selv, vil den automatisk finde ud af om den er udløbet efter man har trykket på knappen og ikke kun "virke" hvis man trykker F5. Derved udløber data af sig selv og siden refreshes automatisk for at det virker bedre efter hensigten.

Dette gøres med:
Fold kodeboks ind/udHTML kode 

Denne kode refresher siden hver 5 sekundt, som derved automatisk får siden til at "gemme" data igen når man har trykket på knappen når de er udløbet.

og så er der knappen som får det hele til at ske:
Fold kodeboks ind/udCSharp kode 


Altså knappen redirecter til en url der har mine egne parametre indbygget.
Når siden så genlæses så tager jeg disse parametre og ser på dem og ser hvornår der er trykket på knappen og hvor lang tids forskel der er fra det tidspunkt til nu. Hvis der er gået mindre end 7 sekunder så vises mine data og hvis der er gået mere end 7 sekunder (for test skyld) så skjules data og der redirectes til en url der siger at nu er data udløbet.
Når siden så læses igen så vises timeout beskeden om at der skal klikkes på knappen igen, og så appendes en header som gør at siden automatisk redirecter sig selv til den oprindelige side uden nogen parametre, som om man lige er gået ind på siden.


---------------------------------------------------------------------------

Det er fordi jeg vil have at når man trykker på knappen kommer man til samme side, blot med et URL parameter som er et tidsstempel.
Dette tidsstempel siger hvornår man modtog mine kontaktoplysninger og disse vil så udløbe efter xxx tid (fx hvis man trykker F5 efter noget tid). Meningen er så at man skal få og vide at det er udløbet og man skal trykke på knappen igen.

Jeg har prøvet med redirect, men eftersom jeg ikke har nogen side der hedder "kontaktanmodning.aspx?code=112108all0ed4Axccs0056" så kan jeg ikke bruge den.
Derfor skal denne postbackurl sættes ved load af siden eller når man trykker på knappen til et nyt tidsstempel, og når man loader siden ses der på om code findes i URL'en så man kan se om de forskellige dele er iorden (kodeord og er indenfor tilladte tidsstempel) og så enten vise mine kontaktoplysninger eller få og vide man aktivt skal bede om dem igen.



Indlæg senest redigeret d. 22.08.2011 13:38 af Bruger #16651
t