Vă mulțumim pentru susținere

Cum traversez o colecție în ASP clasic?

Vreau să pot face:

For Each thing In things
End For

CLASSIC ASP - NU .NET!

0
adăugat editat

6 răspunsuri

Indiferent de lucrurile dvs., trebuie să fie scrise în afara VBScript.

În VB6, puteți scrie o clasă Custom Collection , va trebui să compilați la un DLL ActiveX și înregistrați-l pe serverul dvs. de web pentru al accesa.

0
adăugat

Ceva de genul?

dim cars(2),x
cars(0)="Volvo"
cars(1)="Saab"
cars(2)="BMW"

For Each x in cars
  response.write(x & "
") Next

Consultați www.w3schools.com .

Dacă doriți să asociați cheile și valorile utilizați un obiect de dicționar în loc de:

Dim objDictionary
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.Add "Name", "Scott"
objDictionary.Add "Age", "20"
if objDictionary.Exists("Name") then
    ' Do something
else
    ' Do something else 
end if
0
adăugat

O abordare pe care am folosit-o înainte este de a folosi o proprietate a colecției care returnează o matrice, care poate fi repetată.

Class MyCollection
    Public Property Get Items
        Items = ReturnItemsAsAnArray()
    End Property
    ...
End Class

Iterați ca:

Set things = New MyCollection
For Each thing in things.Items
    ...
Next
0
adăugat

Be VERY carefully on using VB Script Dictionary Object!
Just discover this "autovivication" thing, native on this object: http://en.wikipedia.org/wiki/Autovivification

So, when you need to compare values, NEVER use a boolen comparison like:
If objDic.Item("varName") <> "" Then...
This will automatically add the key "varName" to the dictionary (if it doesn't exist, with an empty value) , in order to carry on evaluating the boolean expression.

Dacă este necesar, utilizați în schimb Dacă objDic.Exists ("varName") .

Just spend a few days knocking walls, with this Mcrosoft "feature"...
vbscript-dictionary-object-creating-a-key-which-never-existed-but-present-in-another-object

0
adăugat

Cel mai aproape aveți de gând pentru a obține este folosind un dicționar (așa cum este menționat de Pacifika)

Dim objDictionary
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.CompareMode = vbTextCompare 'makes the keys case insensitive'
objDictionary.Add "Name", "Scott"
objDictionary.Add "Age", "20"

Dar îmi dau dicționarele ca o colecție

For Each Entry In objDictionary
  Response.write objDictionary(Entry) & "
" Next

Puteți bucla prin întregul dicționar astfel scrierea valorile care ar arata astfel:

Scott
20

Puteți face și asta

For Each Entry In objDictionary
  Response.write Entry & ": " & objDictionary(Entry) & "
" Next

Care ar produce

 Name: Scott
 Age: 20
0
adăugat

După cum a spus Brett, este mai bine să folosești o componentă vb pentru a crea colecții. Dicționarea obiectelor nu este foarte frecvent folosită în ASP decât în ​​cazul aplicațiilor specifice bazate pe necesități.

0
adăugat