L'HttpValueCollection che si sta utilizzando nell'esempio non è in realtà banale e utilizza molte altre parti della libreria System.Web per codificare per te un URL http valido. È possibile estrarre la sorgente per le parti di cui hai bisogno, ma probabilmente verrebbe a cadere in un bel po 'più di quanto pensi!
Se lo capisci e vuoi semplicemente qualcosa di primitivo perché assicuri già che le chiavi e i valori siano codificati correttamente, la cosa più semplice da fare sarebbe semplicemente rotolare la tua.
Ecco un esempio, sotto forma di un metodo di estensione per NameValueCollection:
public static class QueryExtensions
{
public static string ToQueryString(this NameValueCollection nvc)
{
IEnumerable<string> segments = from key in nvc.AllKeys
from value in nvc.GetValues(key)
select string.Format("{0}={1}",
WebUtility.UrlEncode(key),
WebUtility.UrlEncode(value));
return "?" + string.Join("&", segments);
}
}
Si potrebbe utilizzare questa estensione per costruire una stringa di query in questo modo:
// Initialise the collection with values.
var values = new NameValueCollection {{"Key1", "Value1"}, {"Key2", "Value2"}};
// Or use the Add method, if you prefer.
values.Add("Key3", "Value3");
// Build a Uri using the extension method.
var url = new Uri("http://baseurl.com/" + values.ToQueryString());
fonte
2014-12-12 14:16:49
Prova System.Uri: http : //msdn.microsoft.com/pl-pl/library/system.uri%28v=vs.110%29.aspx –
perché ti interessa la dimensione di System.Web? la sua comunque già distribuito nel quadro – fixagon
qui una soluzione: http://stackoverflow.com/questions/14517798/append-values-to-query-string – lem2802