Я знаю, что на стороне клиента (javascript) вы можете использовать windows.location.hash, но не можете найти доступ к серверу.
asp.net
url
fragment-identifier
Рикки Супит
источник
источник
Ответы:
У нас возникла ситуация, когда нам нужно было сохранить хэш URL-адреса во всех ответвлениях ASP.Net. Поскольку браузер по умолчанию не отправляет хэш на сервер, единственный способ сделать это - использовать Javascript:
Когда форма отправляется, возьмите hash (
window.location.hash
) и сохраните его в скрытом поле ввода на стороне сервера. Поместите это в DIV с идентификатором «urlhash
», чтобы мы могли легко найти его позже.На сервере вы можете использовать это значение, если вам нужно что-то с ним сделать. Вы даже можете изменить его, если вам нужно.
При загрузке страницы на клиенте проверьте значение этого скрытого поля. Вы захотите найти его по DIV, в котором он содержится, поскольку автоматически сгенерированный идентификатор не будет известен. Да, вы могли бы сделать некоторые хитрости здесь с .ClientID, но мы обнаружили, что проще просто использовать оболочку DIV, поскольку она позволяет всему этому Javascript жить во внешнем файле и использоваться в общем виде.
Если скрытое поле ввода имеет допустимое значение, установите его в качестве URL-адреса hash (
window.location.hash again
) и / или выполните другие действия.Мы использовали jQuery, чтобы упростить выбор поля и т. Д. ... в итоге получилось несколько вызовов jQuery, один для сохранения значения, а другой для его восстановления.
Перед отправкой:
На странице загрузки:
IsHashValid()
можете проверить "undefined
" или другие вещи, которые вы не хотите обрабатывать.Кроме того, убедитесь, что вы используете
$(document).ready()
правильно, конечно.источник
RFC 2396 раздел 4.1:
(выделение добавлено)
источник
Это потому, что браузер не передает эту часть на сервер, извините.
источник
Вероятно, единственный выбор - это прочитать его на стороне клиента и передать вручную на сервер (GET / POST / AJAX). С уважением Артур
Вы также можете посмотреть, как играть с кнопкой «Назад» и историей браузера в Malcan.
источник
Просто чтобы исключить возможность того, что вы на самом деле не пытаетесь увидеть фрагмент в GET / POST и действительно хотите знать, как получить доступ к той части объекта URI, которую вы имеете в своем коде на стороне сервера, он находится под Uri.Fragment. ( Документы MSDN ).
источник
Возможное решение для запросов GET:
Новый формат ссылки:
http://example.com/yourDirectory?hash=video01
Вызовите эту функцию к верхней части контроллера или
http://example.com/yourDirectory/index.php
:источник