public string ToString(bool withQuestionMark) { if (Count > 0) { var text = new StringBuilder(withQuestionMark ? "?" : null); foreach (string key in Keys) text .Append(HttpUtility.UrlEncode(key, _encoding)) .Append('=') .Append(HttpUtility.UrlEncode(this[key], _encoding)) .Append('&'); text.Length--; // remove last ampersand return text.ToString(); } return ""; }
/// <summary> /// Process RSDN partneship links. /// </summary> /// <param name="urlMatch"></param> /// <param name="link"></param> protected static bool ProcessPartnerLink(Match urlMatch, HtmlAnchor link) { var uriBuilder = new UriBuilder(link.HRef); var queryBuilder = new QueryBuilder(uriBuilder.Query); var partnerRecord = _partnresIDs[uriBuilder.Host]; queryBuilder[partnerRecord.QueryParameter] = partnerRecord.PartnerID; uriBuilder.Query = HttpUtility.HtmlEncode(queryBuilder.ToString()); link.HRef = uriBuilder.Uri.AbsoluteUri; return false; }