2009-02-18 2 views
2

Я пытаюсь перебрать строки запроса и вытаскивать определенные значения, как в:Looping через Request.QueryString в VB.NET

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

Для каждого значения рядом с ProductID Я хочу, чтобы выполнить определенную логику. Но я не уверен, как добраться до ценностей. Есть идеи?

ответ

6

Когда строка запроса имеет более одного значения с тем же ключом можно использовать NameValueCollection.GetValues метод, который возвращает массив строк:

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

Работал как шарм 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 

и это короче, но на основе той же самой идее

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

Попробуйте это. Работает только в 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

Вот какой непроверенный код psuedo, который должен работать для кода, расположенного на странице. Надеюсь, это поможет.

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 не поддерживает квадратные скобки, это C#. – James

+0

Спасибо за напоминание, я мало говорю VB. –