[ASP.NET] Problemen met back button

Pagina: 1
Acties:

  • Jabbah
  • Registratie: Februari 2004
  • Laatst online: 21-05 11:01
Een beetje vaag topic onderwerp, maar ik kon geen betere bedenken.

Probleem: Ik heb een aspx pagina. Als de gebruiker een verkeerde waarde selecteert en op de 'verder' knop drukt, dan maak ik een Panel visible met daarop een error-melding.
Als de gebruiker nu zijn fout herstelt en wederom op de 'verder' knop drukt, dan wordt de volgende pagina geladen. Als ik nu op de back button van de browser druk, dan ga ik weer keurig terug naar de eerste pagina, maar dan is het panel nog steeds zichtbaar, ondanks dat ik in het klik event van de 'verder' knop zeg: panel.Visible = false;

Ik vermoed dat de pagina geen postback doet, omdat ik redirect naar de tweede pagina. Vandaar dat panel.Visible = false; geen effect heeft. Maar hoe kan ik voorkomen dat het panel nog steeds zichtbaar is na een klik op de back button van de browser?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23-05 16:52
smartnavigation ?

https://fgheysels.github.io/


  • Jabbah
  • Registratie: Februari 2004
  • Laatst online: 21-05 11:01
Staat uit. Aanzetten verhelpt het probleem niet. Ik ben overigens geen fan van SmartNavigation. Het heeft wat irritante 'bijwerkingen'.

Bovendien is het in dit geval ook geen optie. De website waar ik aan werk is commercieel en wordt bereikbaar voor particulieren. En aangezien SmartNavigation officieel alleen werkt met IE...

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 06:53

gorgi_19

Kruimeltjes zijn weer op :9

Waarom werk je niet met standaard validator controls en controleer je tijdens het verzend:
Visual Basic .NET:
1
2
3
If page.IsValid then
   ' code
end if

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Jabbah
  • Registratie: Februari 2004
  • Laatst online: 21-05 11:01
Hmm.. de validatie die ik doe is vrij ingewikkeld; Database toegang, ArrayLists en de hele reutemeteut.

Ik zie wel dat de CustomValidator een OnServerValidate event heeft. Wellicht dat ik daar wat mee kan. Even uitproberen dus.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 06:53

gorgi_19

Kruimeltjes zijn weer op :9

Jabbah schreef op 23 augustus 2004 @ 14:41:
Hmm.. de validatie die ik doe is vrij ingewikkeld; Database toegang, ArrayLists en de hele reutemeteut.

Ik zie wel dat de CustomValidator een OnServerValidate event heeft. Wellicht dat ik daar wat mee kan. Even uitproberen dus.
Ook een BaseValidator heeft een public Property IsValid, waardoor je dus iedere validator ook handmatig op false kan zetten :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Jabbah
  • Registratie: Februari 2004
  • Laatst online: 21-05 11:01
Bwah, da's vreemd. Ik gebruik nu een validator. Als ik een fout maak zet ik aan de serverkant validator.IsValid = false. Werkt prima. Dan corrigeer ik de fout. Ik ZIE dat de validator verdwijnt (weer serverside: validator.IsValid = true). De volgende pagina wordt geladen. Als ik dan op de back button van de browser klik, dan staat die validator er weer met z'n foutmelding!
Hoe kan dit toch?

  • Jabbah
  • Registratie: Februari 2004
  • Laatst online: 21-05 11:01
Om het probleem eens wat algemener te beschrijven:

1. Gebruiker klikt op verder
2. validator.IsValid = false.
3. Pagina wordt teruggestuurd naar client
4. Gebruiker klikt op verder
5. validator.IsValid = true.
6. Redirect naar volgende pagina
7. Nieuwe pagina wordt verstuurd naar client
8. Gebuiker klikt op back button van de browser.
9. De browser kent alleen de pagina van stap 3. De pagina van stap 5 is valid, maar wordt nooit teruggestuurd naar de client.

M.a.w. Wanneer je iets wijzigt in een pagina (je wilt bv na een druk op de knop een control onzichtbaar maken (in dit geval, een foutmelding op een panel)) en daarna een redirect doet, dan zal je deze wijziging nooit zien aan de client kant.

Als je besluit de pagina niet te cachen, moet je na de back button de pagina handmatig refreshen, maar dan krijg je ook de oude versie van de pagina terug.

Welke constructie kan ik nu gebruiken om, na gebruik van de back button, op de oude pagina te komen waarbij de foutmelding (validator) niet meer zichtbaar is?
Pagina: 1