Response.redirect url在查询字符串中将空格编码为%20

时间:2010-09-20 00:32:25

标签: c# asp.net url

Response.Redirect(“./ blah.aspx?key = my space with spaces”);

它将浏览器发送到:

mysite/blah.aspx?key=my%20value%20with%20spaces

现在我理解为什么它这样做 - 为了古老的浏览器会扼杀空间。但实际上,我想要的是拥有一个漂亮的url,其中包含空格而不是%s,因为它的工作原理相同。

有没有办法停止response.redirect urlencoding我的空间?

非常感谢

2 个答案:

答案 0 :(得分:8)

您不能拥有带空格的有效网址,空格字符在网址中实际上是非法的。

您不能使Response.Redirect方法避免编码空格,它不是为了创建非法URL而设计的。

答案 1 :(得分:3)

在重定向之前,您总是可以用分数替换密钥中的空格,并在事实之后再将它们“解码”到空格中:

string urlString = "./blah.aspx?key=my value with spaces";
Response.Redirect(urlString.Replace(' ','-'));

并在抓取查询字符串的页面上:

string queryKey = Request["key"].Replace('-',' ');

(注意Request["key"] here中的空值)