/// <summary> /// The AdditionalData of a node is always populated with the query string data, this method performs this /// operation and ensures that special values are not inserted or that duplicate keys are not added. /// </summary> /// <param name="node"></param> /// <param name="queryStrings"></param> protected void AddQueryStringsToAdditionalData(TreeNode node, FormCollection queryStrings) { foreach (var q in queryStrings.Where(x => node.AdditionalData.ContainsKey(x.Key) == false)) { node.AdditionalData.Add(q.Key, q.Value); } }
/// <summary> /// Converts a dictionary object to a query string representation such as: /// firstname=shannon&lastname=deminick /// </summary> /// <param name="items"></param> /// <param name="keysToIgnore">Any keys found in this collection will be removed from the output</param> /// <returns></returns> public static string ToQueryString(this FormCollection items, params string[] keysToIgnore) { if (items == null) { return(""); } if (items.Any() == false) { return(""); } var builder = new StringBuilder(); foreach (var(key, value) in items.Where(i => keysToIgnore.InvariantContains(i.Key) == false)) { builder.Append($"{key}={value}&"); } return(builder.ToString().TrimEnd(Constants.CharArrays.Ampersand)); }