У меня есть URL в формате www.abc.com/mypage#yourId=ASDF2345. Как прочитать значение yourid с помощью c # - PullRequest
0 голосов
/ 13 сентября 2010

В моем приложении у меня есть URL в формате

www.abc.com/mypage#yourId=ASDF2345.

Как я могу прочитать значение параметра yourId из объекта Request в asp.net, c #?

Если бы это было

www.abc.com/mypage?yourId=ASDF2345,

, то я бы получил это из коллекции QueryString в объекте Request.Но есть параметр # перед параметром yourId, и он не предоставляется коллекцией QueryString.

Ответы [ 3 ]

5 голосов
/ 13 сентября 2010

Хэш, на который вы ссылаетесь, на самом деле не отправляется на сервер браузером.Это только на стороне клиента, C # не может «видеть» его.

Если вам нужно это значение, вы можете получить его с помощью свойства document.location.hash в Javascript и отправить его обратно на сервер черезAJAX.

Это облегчается с помощью jQuery BBQ или jQuery Address , которые обнаруживают изменения в местоположении хеш-функции и могут вызывать события.

2 голосов
/ 13 сентября 2010

Часть URL, которая следует за #, называется «идентификатором фрагмента», и нет доступа к этой информации на сервере. На самом деле, он даже никогда не отправляется на сервер - спецификация резервирует идентификатор фрагмента с целью идентификации фрагмента документа, который находится по остальной части URL. Спецификация фактически требует, чтобы браузер удалил идентификатор фрагмента из URL-адреса перед отправкой URL-адреса в HTTP-запросе.

Вы можете получить доступ к идентификатору фрагмента в браузере через JavaScript. Свойство называется document.location.hash.

1 голос
/ 13 сентября 2010

Прочитайте его на стороне клиента с помощью jQuery и перенесите вручную на сервер.

Пример:

var url = "www.abc.com/mypage#yourId=ASDF2345";
var hash = url.substring(url.indexOf('#')); // '#yourId=ASDF2345'

Чек

И помните, что пользователь может изменять хэш по своему усмотрению. Проверьте хэш перед использованием.

...