有没有办法对整个 URL 查询字符串进行 url 编码,而无需尝试对每个单独的查询字符串参数进行 urlencode。现在我不得不用这样的东西重建查询字符串:
foreach (string x in Page.Request.QueryString.Keys)
{
sQueryString += x + "=" + Server.UrlEncode(Request.Params.Get(x)) + "&";
}
您应该做的就是获得以下值:
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 进行转义。如果启用国际资源标识符 (IRI) 或国际化域名 (IDN) 解析,则根据 RFC 3986 和 RFC 3987 对查询信息进行转义。
除了使用 string.Format 并且在 QueryString 末尾有一个额外的 & 之外,上述方法是最佳的。