24

我正在创建一个链接,该链接创建包含带有 URL 参数的链接的 URL 参数。问题是我有这样的链接

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

此链接转到读取这些参数的书签添加页面。

auto是否读取以下参数

source是您完成添加或取消后要去的地方

url是书签链接

title是书签的名称

url和的值title输入到 2 个字段中。然后用户必须单击savecancel。问题是当书签页面在字段中输入值时,它会对它们进行解码。然后如果您尝试保存,它将不会让您保存,因为pdfname值中的url值中有一个空格。它需要链接没有任何空格。所以基本上,我想要它,这样在它进入字段后,它仍然是 a%20而不是空格。

source, auto, or没有问题title, 只是url...

有没有办法解决这个问题?就像我可以使用的特殊转义字符一样%20

注意:我无法修改书签页面。

我正在使用 c#/asp.net 创建链接并转到它。

谢谢

4

3 回答 3

37

从 .NET Framework 4.5 开始,您可以使用WebUtility.UrlEncode.

它位于 中System.dll,因此不需要任何额外的引用。

它正确地转义了 URL 的字符,不像Uri.EscapeUriString

它对字符串的长度没有任何限制,不像Uri.EscapeDataString,所以它可以用于 POST 请求

 System.Net.WebUtility.UrlEncode(urlText)

另一种选择是

 System.Uri.EscapeDataString() 
于 2013-06-21T18:16:21.373 回答
7

Uri.EscapeDataString() 和 Uri.UnescapeDataString() 与 UrlEncode/UrlDecode 方法相比是安全的,并且在解码时不会将加号字符转换为空格。

来自其他用户的一些细节:http: //geekswithblogs.net/mikehuguet/archive/2009/08/16/134123.aspx

于 2014-07-04T07:55:57.603 回答
2

UrlEncode只需在提交 url 之前使用 HttpUtilty 的方法;

 string encoded = HttpUtility.UrlEncode(url);
于 2013-06-21T18:14:16.760 回答