处理网址中的&符号

时间:2016-07-15 11:12:28

标签: c# asp.net

我在.aspx页面上有一个超链接

<asp:HyperLink ID="hlTest" runat="server" NavigateUrl="#">Test Link</asp:HyperLink>

在页面背面的代码我有:

string link = "http://myDoman/myEmailAttachments/1436/" + HttpUtility.HtmlEncode("Picture of Jim&John.jpg");
hlTest.NavigateUrl = link;

这会生成一个类似于以下内容的网址: http://myDomain/myEmailAttachments/1436/Picture%20of%20Jim&John.jpg

这会导致显示一条消息:从客户端(&amp;)检测到一个潜在危险的Request.Path值。

我尝试过使用Server.Urlencode。这会产生一个看起来像......的网址。

http://myDomain/myEmailAttachments/1436/Picture+of+Jim%26John.jpg

这会导致显示相同的消息:从客户端(&amp;)检测到潜在危险的Request.Path值。

如果我有一个名为...的文件

Jim&amp; John.jpg的图片

...我怎样才能将它变成一个超链接,以便它实际上去获取文件?谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

这是因为你不想HTML编码(HttpUtility.HtmlEncode),而是URL编码(HttpUtility.UrlEncode)。然后,%26将被重写为&amp;,这是URL的正确格式。这将阻止ASP.NET将其视为潜在的恶意攻击。

string link = "http://myDoman/myEmailAttachments/1436/"
              + HttpUtility.UrlEncode("Picture of Jim&John.jpg")
              ;