有没有办法在不尝试对每个查询字符串参数进行urlencode的情况下对整个URL查询字符串进行网址编码。现在我不得不用这样的东西重建查询字符串:
foreach (string x in Page.Request.QueryString.Keys)
{
sQueryString += x + "=" + Server.UrlEncode(Request.Params.Get(x)) + "&";
}
答案 0 :(得分:6)
您应该做的就是获得以下价值:
Page.Request.Url.Query
请参阅:
Uri baseUri = new Uri("http://www.contoso.com/catalog/shownew.htm?date=today&<a>=<b>");
string queryString = baseUri.Query;
queryString
参数将返回?date=today&%3Ca%3E=%3Cb%3E
。
另一个编辑 - 来自MSDN:
Query属性包含任何查询 URI中包含的信息。询问 信息与路径分开 问号(?)和 继续到URI的结尾。该 返回的查询信息包括 领先的问号。
转义查询信息 根据RFC 2396默认情况下。如果 国际资源标识符 (IRIs)或国际化域名 启用名称(IDN)解析, 查询信息被转义 到RFC 3986和RFC 3987。
答案 1 :(得分:0)
除了使用string.Format和你有额外的&amp;在QueryString的末尾,上面的方法是最佳的。