Toon posts:

[ASP.net / C#] - Variabelen uit adresbalk halen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Waarschijnlijk een heel simpel probleem, maar ik kom er even niet uit.

Ik maak gebruik van Sessions in mijn ASP-pagina en heb in de OnPageLoad de volgende regel staan:

code:
1
Response.AppendHeader("Refresh", System.Convert.ToString((Session.Timeout * 60)) + "; url=MainForm.aspx?TimeOut=true");

Hierdoor wordt dus na de timeout de pagina herladen met als parameter TimeOut=true. Echter, als ik nu inlog, staat de TimeOut=true nog steeds in de adresbalk en wordt onterecht de melding weergegeven dat er een timeout is opgetreden.

Via de search kwam ik bij deze pagina, maar dat werkt niet:

code:
1
2
3
4
foreach (string myVar in Page.Request.QueryString) 
{
    Page.Response.Write(myVar + " = " + Page.Request.QueryString + "<br>");
}

aangezien Page.Request.QueryString een property is en geen method.

Ik zal wel iets over het hoofd zien. Ik wil dus dat er MainForm.aspx komt de staan na elke pageload.

Verwijderd

Volgens mij is querystring een collectie van variabelen

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 27-04 18:17

gorgi_19

Kruimeltjes zijn weer op :9

http://msdn.microsoft.com...ClassQueryStringTopic.asp

^^^^
QueryString is een NameValue Collection

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
|:(

dom idd.

Maar dit werkt ook niet:

code:
1
2
3
4
foreach (string myVar in Page.Request.QueryString) 
{
    Page.Response.Write(myVar + " = " + Page.Request.QueryString[myVar] + "<br>");
}

Dan komt er gewoon de tekst TimeOut=true op de pagina te staan...

/Edit: die pagina die ik had gevonden ging dus over een ander probleem...

[ Voor 18% gewijzigd door Verwijderd op 27-09-2005 10:51 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 27-04 18:17

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op dinsdag 27 september 2005 @ 10:27:
Ik zal wel iets over het hoofd zien. Ik wil dus dat er MainForm.aspx komt de staan na elke pageload.
Zal een property zijn van Request; RawUrl, Path, PathInfo, moet je anders even kijken. Anders is Request.ServerVariables("Script_Name") ook een optie

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op dinsdag 27 september 2005 @ 10:56:
[...]

Zal een property zijn van Request; RawUrl, Path, PathInfo, moet je anders even kijken. Anders is Request.ServerVariables("Script_Name") ook een optie
Probleem is dat die read-only zijn... Die kan ik dus niet wijzigen :)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 27-04 18:17

gorgi_19

Kruimeltjes zijn weer op :9

Wat wil je nu precies? Wil je nu het adres in de adresbalk wijzigen?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Ja ik zal even wat duidelijker zijn, ik denk ook dat het anders moet.

De gebruiker kan inloggen, de inloggegevens worden opgeslagen in een Session-object. Na een tijdje timed deze out (is dat NL :?) en dan wordt m.b.v. deze regel de pagina herladen:
Response.AppendHeader("Refresh", System.Convert.ToString((Session.Timeout * 60)) + "; url=MainForm.aspx?TimeOut=true");
In de PageOnLoad check ik elke keer de waarde van TimeOut, als deze true is laat ik hiervan een melding zien en wordt het inlogformulier opnieuw getoond. Echter, als de gebruiker dan in probeert te loggen staat ?TimeOut=true nog steeds in de adresbalk, waardoor hij weer de melding krijgt dat er een TimeOut is opgetreden :).

Simpel probleem, maar ik weet niet hoe ik dit zou moeten tackelen. Waarschijnlijk met een wat elegantere oplossing, maar dat heb ik nog niet kunnen vinden op Google of hier.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 27-04 18:17

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op dinsdag 27 september 2005 @ 11:04:
Ja ik zal even wat duidelijker zijn, ik denk ook dat het anders moet.

De gebruiker kan inloggen, de inloggegevens worden opgeslagen in een Session-object. Na een tijdje timed deze out (is dat NL:?) en dan wordt m.b.v. deze regel de pagina herladen:


[...]

In de PageOnLoad check ik elke keer de waarde van TimeOut, als deze true is laat ik hiervan een melding zien en wordt het inlogformulier opnieuw getoond. Echter, als de gebruiker dan in probeert te loggen staat ?TimeOut=true nog steeds in de adresbalk, waardoor hij weer de melding krijgt dat er een TimeOut is opgetreden :).

Simpel probleem, maar ik weet niet hoe ik dit zou moeten tackelen. Waarschijnlijk met een wat elegantere oplossing, maar dat heb ik nog niet kunnen vinden op Google of hier.
Meest simpele en elegante oplossing is om gebruik te maken van Forms Authentication; heb je het hele probleem niet. :) Of wil je per se deze methodiek gebruiken? In dat geval: Response.Redirect naar de juiste pagina :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Daar heb ik me nog niet in verdiept, maar dat is wel een betere oplossing denk ik :) Ik maak gebruik van een WebService (mbv een Web Reference dus) waar de inloggegevens worden gecheckt. Ik zal eens naar Forms Authentication kijken :).

Anders toch maar 'smerig' met Redirect :+.
Met Redirect werkt wel, maar dan krijgt de gebruiker dus niet te zien dat er een sessie-timeout was :) Toch maar ff naar die authentication kijken :)

[ Voor 23% gewijzigd door Verwijderd op 27-09-2005 11:10 ]


Verwijderd

Boland, ik heb het idee dat je nog heel erg aan het leren bent in .Net, en dan is het misschien meer zinvol om in je topic uit te leggen wat je wil bereiken voordat je schrijft hoe je dat aangepakt hebt, want soms zal je aanpak onhandig zijn en is het gewenste effect makkelijker te bereiken maar weet jij nog niet hoe.

Verwijderd

Topicstarter
Verwijderd schreef op dinsdag 27 september 2005 @ 11:43:
Boland, ik heb het idee dat je nog heel erg aan het leren bent in .Net, en dan is het misschien meer zinvol om in je topic uit te leggen wat je wil bereiken voordat je schrijft hoe je dat aangepakt hebt, want soms zal je aanpak onhandig zijn en is het gewenste effect makkelijker te bereiken maar weet jij nog niet hoe.
Klopt, ik zal er de volgende keer aan denken. Dit is de eerste keer dat ik in ASP.NET programmeer en de 2e keer in C#, dus alles is nog nieuw voor mij. Ik probeer het echter wel eerst zelf uit te zoeken voordat ik het hier vraag, maar meestal is er een elegantere oplossing.

/Edit: ik heb alle benodigde code en de controls gecopy-paste vanuit MainForm.aspx naar default.aspx. Gaat allemaal prima, maar nu worden de methode-namen e.d. niet meer gekleurd. Ook als ik bv this. intik, komt er niet een pop-up-dropdown list met alle methoden, properties e.d. Hoe kan dit?? De code werkt prima, maar de designer werkt dus niet helemaal meer naar behoren... Undo werkt bv ook niet meer :?

[ Voor 24% gewijzigd door Verwijderd op 27-09-2005 12:24 ]


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Mischien een keer vs.net opnieuw opstarten. VS.NET heeft nog wel eens vreemde kuren.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
rwb schreef op dinsdag 27 september 2005 @ 12:29:
Mischien een keer vs.net opnieuw opstarten. VS.NET heeft nog wel eens vreemde kuren.
Denk dat ik het al weet. Ik had InitializeComponent() aangepast |:(

Om timeout netjes af te vangen icm een Session, zie hier :)

[ Voor 21% gewijzigd door Verwijderd op 27-09-2005 13:14 ]

Pagina: 1