[ASP.NET] #link toevoegen aan response url

Pagina: 1
Acties:

  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

Topicstarter
Even een situatieschets:

Ik heb een vrij lang formulier dat onderaan 2 afhankelijke dropdownlists heeft: Plaats en Straat. Als Plaats wordt gewijzigd, vindt er een postback plaats waarin de inhoud van Straat wordt gewijzigd in de stratenlijst van de geselecteerde plaats.

Door deze postback(s) komt de user echter weer terug bovenaan de pagina. Een kleinigheidje, maar wel iets dat ontzettend irritant is. Nu wou ik in dit postback event een #link toevoegen aan de url, waar geen mogelijkheid voor leek te zijn. Let op: een Redirect is geen oplossing omdat dan de wijziging van de inhoud van Plaats en Straat ongedaan wordt gemaakt (de pagina wordt weer opnieuw ingeladen).

Dus bedacht ik om gewoon standaard #link toe te voegen aan de URL in alle hyperlinks, en diverse <a name="link" /> htmlcontrols op de pagina te zetten die standaard onzichtbaar zijn, maar wanneer nodig wordt de juiste op visible = true gezet.
Helaas haalt de browser (of ASP.NET) het #link gedeelte weg uit de URL bij een postback, waardoor dit dus alsnog niet werkt.
Ook pogingen om het action attribuut van het server form te veranderen liepen op niets uit; de #link toevoeging wordt er, lijkt het, door de browser uitgesloopt. Het action attribuut van het server form kan ik ook niet handmatig instellen omdat er GET variabelen in de URL zitten die telkens veranderen.

Nu heb ik met javascript dmv. location.hash = '#link' IE zover kunnen krijgen dat ie naar de goede positie springt. In FF wordt het #link gedeelte wel aan de URL toegevoegd, maar de pagina springt niet vanzelf naar de anchor toe.

Mijn vraag:
a) is er een manier om te zorgen dat in FF alsnog naar de anchor wordt gesprongen?
b) of is er een betere manier om dit voor elkaar te krijgen, het liefst zonder javascript, bijv. een serverside oplossing?

Certified smart block developer op de agile darkchain stack. PM voor info.


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
SmartNavigation op True zetten?

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

Topicstarter
Dat werkt dus helaas alleen in IE, en mijn probleem zit em nou juist bij Firefox. In IE werkt het al met location.hash, dus daar is smartnavigation niet eens nodig (tenminste niet om dit probleem op te lossen).

[ Voor 28% gewijzigd door Not Pingu op 27-02-2005 00:04 ]

Certified smart block developer op de agile darkchain stack. PM voor info.


Verwijderd

Gunp01nt schreef op zondag 27 februari 2005 @ 00:04:
Dat werkt dus helaas alleen in IE, en mijn probleem zit em nou juist bij Firefox. In IE werkt het al met location.hash, dus daar is smartnavigation niet eens nodig (tenminste niet om dit probleem op te lossen).
Even een gedachtenspinsel van mij.. Maar wat gebeurt er als je het plaats control de focus geeft?

[ Voor 14% gewijzigd door Verwijderd op 27-02-2005 13:52 ]


Verwijderd

Je zou ook de positie van het formulier in een hiddenfield kunnen bij houden (die je dus vult bij een postback). Je kan dan naar die locatie scrollen doormiddel van javascript.

JavaScript:
1
window.document.location.href = <%# hiddenfield.value %>;

  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

Topicstarter
Hakkert: dat is idd een goeie. Ik had die suggestie vanochtend ook hier al gevonden, en door een input-veld onderaan de pagina de focus te geven, springt de pagina idd naar beneden.

Dit werkt wederom wel in IE maar niet in FF. Ik heb de hele ochtend met javascript zitten klooien, en ben erachter gekomen dat in FF om onverklaarbare redenen javascript soms niet uitgevoerd wordt. Misschien een beveiligingsinstelling in FF? Javascript staat wel aan enzo.

Als ik nl. in de body-tag een onload="Plaats.focus()" hardcode, werkt het perfect. Als ik het volgende doe in de ASP.NET postback event:
code:
1
Plaats.Attributes.Add("onload", "this.focus()")

dan werkt het weer niet in FF. :(

* Not Pingu gaat nog even verder klooien.
Verwijderd schreef op zondag 27 februari 2005 @ 14:16:
[...]


Maak daar is van:
code:
1
Plaats.Attributes.Add("onload", "javascript:this.focus()")
Helaas geen verschil. De Javascript console in FF laat ook geen foutmeldingen zien.

[ Voor 24% gewijzigd door Not Pingu op 27-02-2005 14:24 ]

Certified smart block developer op de agile darkchain stack. PM voor info.


Verwijderd

Gunp01nt schreef op zondag 27 februari 2005 @ 14:11:
Als ik nl. in de body-tag een onload="Plaats.focus()" hardcode, werkt het perfect. Als ik het volgende doe in de ASP.NET postback event:
code:
1
Plaats.Attributes.Add("onload", "this.focus()")

dan werkt het weer niet in FF. :(

/me gaat nog even verder klooien.
Maak daar is van:
code:
1
Plaats.Attributes.Add("onload", "javascript:this.focus()")

  • Folkert
  • Registratie: September 2001
  • Laatst online: 13-05 16:52
Pagina: 1