Récupération du lien D'ancrage dans L'URL pour ASP.Net

j'ai une url comme ceci:

http://localhost/place/663828/bangkok-paradise-restaurant-toronto#r306040

j'essaie de voir s'il y a l'existence de la balise d'ancrage avec la valeur de l'obtenir pour faire quelque logique de code dans le code derrière.

j'ai essayé d'utiliser la Page.Request, mais aucune des propriétés n'affiche la partie lien d'ancrage de l'url.

Par exemple:

Réponse.Écrire(ce.Page.Demande.RawUrl.ToString ());

Assez bien essayé les combinaisons/propriétés sur cette page: http://www.west-wind.com/weblog/posts/269.aspx

Juste pour finaliser ce sujet:

j'ai copié l'approche de Stackoverflow avec permalink... : D

20
demandé sur TimLeung 2009-04-21 23:09:20

3 réponses

il n'est pas possible de récupérer l'ancre #du côté du serveur ASP.NET

ceci est un drapeau côté client pour dire au navigateur de se déplacer à un endroit spécifique dans la page.

Vous pouvez utiliser du Javascript dans l'événement body onLoad pour vérifier une ancre et la renvoyer au serveur en utilisant ajax.

var anchorValue;
var url = document.location;
var strippedUrl = url.toString().split("#");
if(strippedUrl.Length > 1)
anchorvalue = strippedUrl[1];

réf: http://www.wacdesigns.com/2008/01/16/retrieving-anchor-value-from-url/

25
répondu Eoin Campbell 2013-02-01 12:18:35

étant plus explicite, la balise d'ancrage n'est jamais envoyée en tant que partie de la requête HTTP par un navigateur, elle n'est interprétée que localement dans le navigateur. Aucun ASP.NET ni aucune autre technologie de serveur web, Microsoft ou autre verra l'ancre sur cette demande.

RFC 1808

La Section 2.4.1 - "Notez que l'identificateur de fragment n'est pas considéré comme faisant partie de l'URL."

comme d'autres ont suggéré le plus proche de vous pourrait obtenir serait d'utiliser côté client lire la fenêtre du navigateur de l'emplacement.

15
répondu stephbu 2009-04-21 19:38:33

Un fragment peut être analysé à partir d'une url en C# de la manière suivante:

var uri = new Uri("http://localhost?id=2#token=23");
var fragment = uri.Fragment; // will return #token=23

Il y a cependant un problème dans le fait que le navigateur n'envoie pas de fragments au serveur. Si vous recevez des requêtes d'un service qui inclut cette information dans la requête, elle sera également disponible du côté du serveur.

6
répondu Eugeniu Torica 2018-01-10 18:23:26