Response.Redirect(“./ blah.aspx?key = my space with spaces”);
它将浏览器发送到:
mysite/blah.aspx?key=my%20value%20with%20spaces
现在我理解为什么它这样做 - 为了古老的浏览器会扼杀空间。但实际上,我想要的是拥有一个漂亮的url,其中包含空格而不是%s,因为它的工作原理相同。
有没有办法停止response.redirect urlencoding我的空间?
非常感谢
答案 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
中的空值)