2010-09-13 17 views
0

Dans mon application j'ai un url dans le formatJ'ai une URL au format www.abc.com/mypage#yourId=ASDF2345. Comment lire la valeur de yourid en utilisant C#

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

Comment puis-je lire la valeur du paramètre yourId à partir de l'objet Request dans asp.net, C#?

S'il aurait été

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

alors j'aurait obtenu ce de la collection QueryString dans l'objet de demande. Mais il y a un # avant le paramètre yourId et il n'est pas fourni par la collection QueryString.

Répondre

5

Le hachage auquel vous faites référence n'est pas réellement envoyé au serveur par le navigateur. C'est du côté client seulement, C# ne peut pas le "voir".

Si vous devez avoir cette valeur, vous pouvez l'obtenir avec la propriété document.location.hash en Javascript et la renvoyer au serveur via AJAX.

Ceci est facilité par jQuery BBQ ou jQuery Address, qui détectent les changements dans l'emplacement du hachage et peuvent déclencher des événements.

+0

Merci beaucoup. Appréciez-le. –

2

La partie de l'URL qui suit le # est appelée «identificateur de fragment» et il n'existe aucun moyen d'accéder à cette information sur le serveur. En fait, il n'est même jamais envoyé au serveur - la spécification réserve l'identificateur de fragment dans le but d'identifier un fragment du document qui est localisé par le reste de l'URL. La spécification nécessite en fait que le navigateur supprime l'identifiant de fragment de l'URL avant d'envoyer l'URL dans la requête HTTP.

Vous pouvez accéder à l'identifiant du fragment dans le navigateur via javascript. La propriété est appelée document.location.hash.

1

Lisez-le côté client en utilisant jQuery et transférez-le manuellement au serveur.

Exemple:

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

Check

Et rappelez-vous que l'utilisateur peut changer le hachage comme il/elle veut. Vérifiez le hachage avant de l'utiliser.