Wiem, że po stronie klienta (javascript) możesz użyć windows.location.hash, ale i tak nie możesz znaleźć dostępu od strony serwera.
asp.net
url
fragment-identifier
Ricky Supit
źródło
źródło
Odpowiedzi:
Mieliśmy sytuację, w której musieliśmy zachować skrót adresu URL w postach zwrotnych ASP.Net. Ponieważ przeglądarka domyślnie nie wysyła skrótu na serwer, jedynym sposobem na to jest użycie JavaScript:
Kiedy formularz zostanie przesłany, pobierz hash (
window.location.hash
) i zapisz go w ukrytym polu wejściowym po stronie serwera. Umieść to w DIV z identyfikatorem „urlhash
”, abyśmy mogli go później łatwo znaleźć.Na serwerze możesz użyć tej wartości, jeśli chcesz coś z tym zrobić. Możesz go nawet zmienić, jeśli zajdzie taka potrzeba.
Podczas ładowania strony na kliencie sprawdź wartość tego ukrytego pola. Będziesz chciał go znaleźć przez DIV, w którym jest zawarty, ponieważ automatycznie wygenerowany identyfikator nie będzie znany. Tak, możesz zrobić tutaj trochę oszustwa z .ClientID, ale okazało się, że prostsze jest po prostu użycie opakowania DIV, ponieważ pozwala on całemu JavaScriptowi żyć w zewnętrznym pliku i być używany w sposób ogólny.
Jeśli ukryte pole wejściowe ma prawidłową wartość, ustaw ją jako skrót adresu URL (
window.location.hash again
) i / lub wykonaj inne czynności.Użyliśmy jQuery, aby uprościć wybór pola, itp ... w sumie kończy się to na kilku wywołaniach jQuery, jednym do zapisania wartości, a drugim do jej przywrócenia.
Przed przesłaniem:
Po załadowaniu strony:
IsHashValid()
może sprawdzić „undefined
” lub inne rzeczy, którymi nie chcesz się zajmować.Oczywiście upewnij się, że używasz
$(document).ready()
odpowiednio.źródło
RFC 2396 sekcja 4.1:
(podkreślenie dodane)
źródło
To dlatego, że przeglądarka nie przesyła tej części na serwer, przepraszam.
źródło
Prawdopodobnie jedynym wyjściem jest odczytanie go po stronie klienta i ręczne przeniesienie na serwer (GET / POST / AJAX). Pozdrawiam Artur
Możesz również zobaczyć, jak grać za pomocą przycisku Wstecz i historii przeglądarki w Malcan
źródło
Aby wykluczyć możliwość, że w rzeczywistości nie próbujesz zobaczyć fragmentu w GET / POST i naprawdę chcesz wiedzieć, jak uzyskać dostęp do tej części obiektu URI, którą masz w kodzie po stronie serwera, znajduje się ona w Uri. ( Dokumentacja MSDN ).
źródło
Możliwe rozwiązanie dla żądań GET:
Nowy format linku:
http://example.com/yourDirectory?hash=video01
Wywołaj tę funkcję w kierunku górnej części kontrolera lub
http://example.com/yourDirectory/index.php
:źródło