ASP C#:特殊字符:#,$,+无法通过URL参数传递

时间:2014-07-27 07:35:52

标签: c# asp.net special-characters filenames url-parameters

我需要从虚拟文件夹中获取文件。我有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悬停工具提示中调用此类。

3 个答案:

答案 0 :(得分:3)

你需要逃脱那些特殊的角色:

这个功能做得最好:

enter image description here

请注意,不要使用UrlEncode

enter image description here

答案 1 :(得分:1)

如果要将特殊字符放入网址,则应编码特殊字符。

您可以在字符串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

答案 2 :(得分:0)

使用这些字符的urlencoded值。列表可以在这里找到 -

http://www.w3schools.com/tags/ref_urlencode.asp

例如,&将是 - %26

因此,/GetDocumentPreview.aspx?name=&filename&type=jpg将是 - /GetDocumentPreview.aspx?name=%26filename&type=jpg