2009-02-18 8 views
2

Je suis en train de boucle à travers une chaîne de requête et retirer certaines valeurs comme dans:Looping par un Request.QueryString dans VB.NET

?ProductID=1234&ProductID=4321&Quantity=1 

Pour chaque valeur à côté de ProductID je veux exécuter une certaine logique. Mais je ne suis pas sûr de savoir comment atteindre les valeurs. Des idées?

Répondre

6

Lorsque votre chaîne de requête a plus d'une valeur avec la même clé que vous pouvez utiliser la méthode NameValueCollection.GetValues qui retourne un tableau de chaînes:

dim productID as string 
for each productID in Page.Request.QueryString.GetValues("ProductID") 
    ' do something with productID 
next productID 
+0

A travaillé comme un charme thx. – plntxt

1
Dim sQS as String = Request.QueryString.ToString 
For Each eItem In Split(sQS, "&") 
Dim sName As String = Left(eItem, InStr(eItem & "=", "=") - 1) 
Response.Write(sName _ 
& " = " & Request.QueryString(sName) _ 
& "<br>") 
Next 

et est plus courte, mais basée sur la même idée

For Each Key As String In Request.QueryString.Keys 
Response.Write(Key & " = " & Request.QueryString(Key) & "<br>") 
Next 
1

Essayez celui-ci. Ne fonctionne que dans VB9.

Dim queryString = GetQueryString() 
queryString = queryString.SubString(1) 'Remove ? 
Dim ids = queryString. _ 
    Split("&"c). _ 
    Select(Function(x) x.Split("="c)). _ 
    Where(Function(x) x(0) = "ProductId"). _ 
    Select(Function(x) x(1)) 
4

Voici un code Psuedo non testé qui devrait fonctionner pour le code derrière sur la page. J'espère que ça aide.

dim key as string 
dim list as new arraylist() 
for each key in Page.Request.QueryString.Keys 
if key = "ProductID" then 
    list.add(Page.Request.QueryString(key)) 
end if 
next key 

' do somthing with the list of product id's 
2
Dim productID = Request.Querystring("ProductID") 
Dim quantity = Request.Querystring("Quantity") 
+0

VB ne supporte pas les crochets, c'est C#. – James

+0

Merci pour le rappel, je ne parle pas beaucoup de VB. –

Questions connexes