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.
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]);
}
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.
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();
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.
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;