ASP C#:特殊字符:#、$、+ 不能通过 URL 参数
Posted
技术标签:
【中文标题】ASP C#:特殊字符:#、$、+ 不能通过 URL 参数【英文标题】:ASP C#: Special characters: #, $, + cant pass trough URL parameter 【发布时间】:2014-09-18 16:12:01 【问题描述】:我需要从虚拟文件夹中获取文件。我有 GetDocumentPreview.aspx 可以做到这一点。参数是 URL 类型。下面好一个:
/GetDocumentPreview.aspx?name=filename&type=jpg
//But if I ask for file with #, &, + in name:
/GetDocumentPreview.aspx?name=&filename&type=jpg
/GetDocumentPreview.aspx?name=#filename&type=jpg
/GetDocumentPreview.aspx?name=+filename&type=jpg
我没有文件,因为字符#、&、+(我已经测试了所有字符)。
如何将#、&、+ 传递给 URL 参数。我需要使用 URL 参数,因为我从带有图像的 javascript 悬停工具提示中调用此类。
【问题讨论】:
【参考方案1】:你需要转义那些特殊字符:
这个功能做得最好:
小心,不要使用 UrlEncode
【讨论】:
【参考方案2】:使用这些字符的 urlencoded 值。可以在此处找到列表 -
http://www.w3schools.com/tags/ref_urlencode.asp
例如,&
将是 - %26
。
所以,/GetDocumentPreview.aspx?name=&filename&type=jpg
将是 - /GetDocumentPreview.aspx?name=%26filename&type=jpg
【讨论】:
【参考方案3】:如果要将特殊字符放入 URL,则应对其进行编码。
您可以在字符串 URL 上使用HttpServerUtility.UrlEncode
,然后再将其放入超链接/按钮重定向位置。一个例子是:
string destinationURL = "http://www.contoso.com/default.aspx?user=specialCharacters";
NextPage.NavigateUrl = "~/Finish?url=" + Server.UrlEncode(destinationURL);
在您的情况下,您应该在将文件名放入 URL 字符串之前对文件名进行 UrlEncode,提到的特殊字符将用作:
& = %26
+ = %2B
更多信息可以在这里查看:http://msdn.microsoft.com/en-us/library/zttxte6w(v=vs.110).aspx
【讨论】:
以上是关于ASP C#:特殊字符:#、$、+ 不能通过 URL 参数的主要内容,如果未能解决你的问题,请参考以下文章