Comment échapper à l'encodage de l'url?
Je suis entrain de créer un lien qui crée les paramètres d'URL qui contient des liens avec des paramètres d'URL.
Le problème est que j'ai un lien comme ceci
http://mydomain/_layouts/test/MyLinksEdit.aspx?auto=true&source=
http://vtss-sp2010hh:8088/AdminReports/helloworld.aspx?pdfid=193
&url=http://vtss-sp2010hh:8088/AdminReports/helloworld.aspx?pdfid=193%26pdfname=5.6%20Upgrade
&title=5.6 Upgrade
Ce lien va vers un signet ajout de la page où il lit ces paramètres.
auto
est résistant aux intempéries pour lire les paramètres suivants ou pas
source
est l'endroit où aller après vous avez terminé d'ajouter ou d'annuler
url
est le lien de signet
title
est le nom du signet
Les valeurs de url
et title
entrer dans les 2 champs. Ensuite, l'utilisateur doit cliquer sur le bouton save
ou cancel
.
Le problème, c'est lorsque le signet de la page entre les valeurs dans le champ, il va décoder.
Ensuite, si vous essayez d'enregistrer, il ne vous laisse pas l'enregistrer car la pdfname
valeur dans la url
valeur a un espace. Il faut le lien pour ne pas avoir des espaces. Donc, fondamentalement, je veux qu'il sorte qu'après être entré dans le champ, il sera toujours un %20
au lieu d'un espace.
Il n'y a pas un problème avec source
, auto
, ou title
, juste le url
...
Est-il un moyen de résoudre ce problème? Comme peut-être un spécial caractère d'échappement que je peux utiliser pour le %20
?
Note: je ne peux pas modifier le signet de la page.
Je suis à l'aide de c#/asp.net pour créer le lien et aller à elle.
Grâce
OriginalL'auteur omega | 2013-06-21
Vous devez vous connecter pour publier un commentaire.
Depuis .NET Framework 4.5, vous pouvez utiliser
WebUtility.UrlEncode
.Elle réside dans
System.dll
, de sorte qu'il ne nécessite pas d'autres références.Correctement échappe les caractères pour les Url, contrairement à
Uri.EscapeUriString
Il n'a pas de limites sur la longueur de la chaîne, contrairement à
Uri.EscapeDataString
, de sorte qu'il peut être utilisé pour les requêtes POSTUne autre option est
+
, qui n'a pas fonctionné, car le signet de la page, décodé. Mais j'ai tout compris, j'ai juste fait,string.replace(" ", "%2520");
. De cette façon, le signet de la page décode%25
dans un%
, qui laisse juste%20
la gauche qui est ce qui a fonctionné.OriginalL'auteur ericdc
Uri.EscapeDataString() et Uri.UnescapeDataString() sont sûres comparant à UrlEncode/UrlDecode méthodes et ne permet pas de convertir plus de personnages dans des espaces lors du décodage.
Quelques détails à partir d'un autre utilisateur: http://geekswithblogs.net/mikehuguet/archive/2009/08/16/134123.aspx
La comparaison de la fonction UrlEncode/UrlDecode méthodes, d'Uri.EscapeDataString/Uri.UnescapeDataString ne permet pas de convertir plus de personnages dans des espaces. (J'ai édité mon post pour préciser la réponse)
OriginalL'auteur mmosoll
Suffit d'utiliser HttpUtilty de
UrlEncode
droit de la méthode avant de vous remettre l'url;OriginalL'auteur evanmcdonnal