【问题标题】:Querystring not working, ampersands converted to %20查询字符串不起作用,& 符号转换为 %20
【发布时间】:2012-02-10 09:08:48
【问题描述】:
【问题讨论】:
标签:
c#
query-string
urlencode
【解决方案1】:
任何传入/传出 URL 的值都应该是 Url Encoded/Decoded。
另一方面,在页面上显示文本 (HTML) 时,您应该使用 HtmlEncode。
你可以在命名空间System.Web中找到方法:
-
HttpUtility.UrlEncode。
-
HttpUtility.UrlDecode。
-
HttpUtility.UrlHtmlEncode。
等等
希望对您有所帮助。
【解决方案2】:
您正在编码整个查询字符串,而不仅仅是它们的值。
你应该做类似的事情
var values = new Dictionary<string, string>();
values.Add("firstname", "Joe");
values.Add("lastname", "Average");
var querystring = String.Join("&", values.Select(pair =>
pair.Key + "=" + HttpUtility.UrlEncode(pair.Value)).ToArray());