Ich weiß, dass Sie auf der Clientseite (Javascript) windows.location.hash verwenden können, aber ohnehin keinen Zugriff von der Serverseite finden konnten.
asp.net
url
fragment-identifier
Ricky Supit
quelle
quelle
Antworten:
Wir hatten eine Situation, in der wir den URL-Hash über ASP.Net-Post-Backs hinweg beibehalten mussten. Da der Browser den Hash standardmäßig nicht an den Server sendet, können Sie nur Javascript verwenden:
Wenn das Formular gesendet wird, greifen Sie zu hash (
window.location.hash
) und speichern Sie es in einem serverseitigen versteckten Eingabefeld. Geben Sie dies in ein DIV mit der ID "urlhash
" ein, damit wir es später leicht finden können.Auf dem Server können Sie diesen Wert verwenden, wenn Sie etwas damit tun müssen. Sie können es sogar ändern, wenn Sie müssen.
Überprüfen Sie beim Laden der Seite auf dem Client den Wert dieses ausgeblendeten Felds. Sie sollten es bei dem DIV finden, in dem es enthalten ist, da die automatisch generierte ID nicht bekannt ist. Ja, Sie könnten hier mit .ClientID einige Tricks machen, aber wir fanden es einfacher, nur den Wrapper DIV zu verwenden, da all dieses Javascript in einer externen Datei leben und generisch verwendet werden kann.
Wenn das ausgeblendete Eingabefeld einen gültigen Wert hat, legen Sie diesen als URL-Hash (
window.location.hash again
) fest und / oder führen Sie andere Aktionen aus.Wir haben jQuery verwendet, um die Auswahl des Felds usw. zu vereinfachen. Alles in allem handelt es sich um ein paar jQuery-Aufrufe, einen zum Speichern des Werts und einen zum Wiederherstellen des Werts.
Vor dem Absenden:
Laden auf der Seite:
IsHashValid()
kann nach "undefined
" oder anderen Dingen suchen, die Sie nicht behandeln möchten.Stellen Sie außerdem sicher, dass Sie verwenden
$(document).ready()
angemessen verwenden.quelle
RFC 2396 Abschnitt 4.1:
(Betonung hinzugefügt)
quelle
Das liegt daran, dass der Browser diesen Teil nicht an den Server überträgt.
quelle
Wahrscheinlich besteht die einzige Möglichkeit darin, es auf der Clientseite zu lesen und manuell auf den Server zu übertragen (GET / POST / AJAX). Grüße Artur
Möglicherweise sehen Sie auch, wie Sie mit der Zurück-Schaltfläche und dem Browserverlauf bei Malcan spielen
quelle
Um die Möglichkeit auszuschließen, dass Sie nicht wirklich versuchen, das Fragment auf einem GET / POST zu sehen, und tatsächlich wissen möchten, wie Sie auf den Teil eines URI-Objekts zugreifen können, den Sie in Ihrem serverseitigen Code haben, befindet es sich unter Uri.Fragment ( MSDN-Dokumente ).
quelle
Mögliche Lösung für GET-Anfragen:
Neues Link-Format:
http://example.com/yourDirectory?hash=video01
Rufen Sie diese Funktion oben am Controller auf oder
http://example.com/yourDirectory/index.php
:quelle