web-dev-qa-db-fra.com

Existe-t-il un moyen d'obtenir toutes les paires nom / valeur de la chaîne de requête dans une collection?

Existe-t-il un moyen d'obtenir toutes les paires nom/valeur de la chaîne de requête dans une collection?

Je recherche un chemin intégré dans .net, sinon je peux simplement me diviser sur le & et charger une collection.

53
Blankman

Oui, utilisez le HttpRequest.QueryString collection:

Obtient la collection de variables de chaîne de requête HTTP.

Vous pouvez l'utiliser comme ceci:

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

Bien, Request.QueryString déjà IS une collection. Plus précisément, c'est un NameValueCollection. Si votre code s'exécute dans ASP.NET, c'est tout ce dont vous avez besoin.

Donc, pour répondre à votre question: oui, il y en a.

10
Joel Mueller

Vous pouvez utiliser LINQ pour créer une liste d'objets anonymes auxquels vous pouvez accéder dans un tableau:

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

Si vous avez une chaîne de requête UNIQUEMENT représentée sous forme de chaîne, utilisez HttpUtility.ParseQueryString pour l'analyser en une NameValueCollection.

Cependant, si cela fait partie d'une HttpRequest, utilisez la propriété QueryString déjà analysée de votre HttpRequest.

6
jishi

La propriété QueryString dans la classe HttpRequest est en fait NameValueCollection class. Tout ce que vous devez faire c'est

NameValueCollection col = Request.QueryString;

2
Asad Butt