简体   繁体   中英

Is there a way to get all the querystring name/value pairs into a collection?

Is there a way to get all the querystring name/value pairs into a collection?

I'm looking for a built in way in .net, if not I can just split on the & and load a collection.

Yes, use the HttpRequest.QueryString collection:

Gets the collection of HTTP query string variables.

You can use it like this:

foreach (String key in Request.QueryString.AllKeys)
{
    Response.Write("Key: " + key + " Value: " + Request.QueryString[key]);
}

Well, Request.QueryString already IS a collection. Specifically, it's a NameValueCollection . If your code is running in ASP.NET, that's all you need.

So to answer your question: Yes, there is.

You can use LINQ to create a List of anonymous objects that you can access within an array:

var qsArray = Request.QueryString.AllKeys
    .Select(key => new { Name=key.ToString(), Value=Request.QueryString[key.ToString()]})
    .ToArray();

If you have a querystring ONLY represented as a string, use HttpUtility.ParseQueryString to parse it into a NameValueCollection.

However, if this is part of a HttpRequest, then use the already parsed QueryString-property of your HttpRequest.

QueryString property in HttpRequest class is actually NameValueCollection class. All you need to do is

NameValueCollection col = Request.QueryString;

Create dictionary of parameters

Dictionary<string, string> parameters = new Dictionary<string, string>();
            parameters = Request.QueryString.Keys.Cast<string>().ToDictionary(k => k, v => Request.QueryString[v]);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM