Is there a way to convert a Dictionary in code into a url parameter string?
e.g.
// An example list of parameters
Dictionary<string, object> parameters ...;
foreach (Item in List)
{
parameters.Add(Item.Name, Item.Value);
}
string url = "http://www.somesite.com?" + parameters.XX.ToString();
Inside MVC HtmlHelpers you can generate URLs with the UrlHelper (or Url in controllers) but in Web Forms code-behind the this HtmlHelper is not available.
string url = UrlHelper.GenerateUrl("Default", "Action", "Controller",
new RouteValueDictionary(parameters), htmlHelper.RouteCollection ,
htmlHelper.ViewContext.RequestContext, true);
How could this be done in C# Web Forms code-behind (in an MVC/Web Forms app) without the MVC helper?
One approach would be:
var url = string.Format("http://www.yoursite.com?{0}",
HttpUtility.UrlEncode(string.Join("&",
parameters.Select(kvp =>
string.Format("{0}={1}", kvp.Key, kvp.Value)))));
You could also use string interpolation as introduced in C#6:
var url = $"http://www.yoursite.com?{HttpUtility.UrlEncode(string.Join("&", parameters.Select(kvp => $"{kvp.Key}={kvp.Value}")))}";
And you could get rid of the UrlEncode
if you don't need it, I just added it for completeness.