lko lko - 11 months ago 96
C# Question

Convert a Dictionary to string of url parameters?

Is there a way to convert a Dictionary in code into a url parameter string?


// An example list of parameters
Dictionary<string, object> parameters ...;
foreach (Item in List)
parameters.Add(Item.Name, Item.Value);

string url = "" + 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?

Answer Source

One approach would be:

var url = HttpUtility.UrlEncode(
            parameters.Select(kvp =>
                string.Format("{0}={1}", kvp.Key, kvp.Value)))));

And you could get rid of the UrlEncode if you don't need it, I just added it for completeness.