Вы можете создать новый записываемый экземпляр HttpValueCollection
, вызвав System.Web.HttpUtility.ParseQueryString(string.Empty)
, а затем использовать его как любой NameValueCollection
. После того, как вы добавили нужные значения, вы можете вызвать ToString
в коллекции, чтобы получить строку запроса, следующим образом:
NameValueCollection queryString = System.Web.HttpUtility.ParseQueryString(string.Empty);
queryString["key1"] = "value1";
queryString["key2"] = "value2";
return queryString.ToString(); // Returns "key1=value1&key2=value2", all URL-encoded
HttpValueCollection
является внутренним, и поэтому вы не можете напрямую построить пример. Однако, как только вы получите экземпляр, вы можете использовать его, как и любой другой NameValueCollection
. Поскольку фактический объект, с которым вы работаете, является HttpValueCollection
, вызов метода ToString вызовет переопределенный метод на HttpValueCollection
, который форматирует коллекцию в виде строки запроса, закодированной в URL.
После поиска SO и в Интернете для ответа на аналогичную проблему, это самое простое решение, которое я смог найти.
.NET Core
Если вы работаете в .NET Core, вы можете использовать Microsoft.AspNetCore.WebUtilities.QueryHelpers
, что значительно упрощает это.
https://docs.microsoft.com/en-us/aspnet/core/api/microsoft.aspnetcore.webutilities.queryhelpers