vbscript - Comment parcourir une collection en ASP classique?

Translate

Je veux pouvoir faire:

For Each thing In things
End For

ASP CLASSIQUE - PAS .NET!

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

Quels que soient vos [choses] doivent être écrits en dehors de VBScript.

En VB6,vous pouvez écrire une classe de collection personnalisée, vous devrez alors compiler dans une DLL ActiveX et l'enregistrer sur votre serveur Web pour y accéder.

La source
Translate

Quelque chose comme ça?

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

For Each x in cars
  response.write(x & "<br />")
Next

Voirwww.w3schools.com.

Si vous souhaitez associer des clés et des valeursutiliser un objet dictionnaireau lieu:

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
La source
Translate

Le plus proche que vous allez obtenir est d'utiliser un dictionnaire (comme mentionné par Pacifika)

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

Mais je parcourt mes dictionnaires comme une collection

For Each Entry In objDictionary
  Response.write objDictionary(Entry) & "<br />"
Next

Vous pouvez parcourir le dictionnaire entier de cette façon en écrivant les valeurs qui ressembleraient à ceci:

Scott
20

Vous pouvez également le faire

For Each Entry In objDictionary
  Response.write Entry & ": " & objDictionary(Entry) & "<br />"
Next

Ce qui produirait

 Name: Scott
 Age: 20
La source
Translate

Une approche que j'ai utilisée auparavant consiste à utiliser une propriété de la collection qui renvoie un tableau, qui peut être itéré.

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

Itérer comme:

Set things = New MyCollection
For Each thing in things.Items
    ...
Next
La source
Translate

Comme Brett l'a dit, il est préférable d'utiliser un composant vb pour créer des collections. Les objets de dictionnaire ne sont pas très couramment utilisés dans ASP, sauf pour des applications basées sur des besoins spécifiques.

La source
Translate

Soyez TRÈS prudent sur l'utilisation de VB Script Dictionary Object!
Découvrez simplement ceci "autovivication"chose, native sur cet objet:http://en.wikipedia.org/wiki/Autovivification

Ainsi, lorsque vous avez besoin de comparer des valeurs, n'utilisez JAMAIS une comparaison booléenne comme:
If objDic.Item("varName") <> "" Then...
Cette volontéautomatiquementajouter la clé "varName"au dictionnaire (s'il n'existe pas, avec une valeur vide), afin de continuer à évaluer l'expression booléenne.

Si nécessaire, utilisez à la placeIf objDic.Exists("varName").

Passez quelques jours à frapper les murs avec ce Mcrosoft "fonctionnalité"...
vbscript-dictionary-object-creation-a-key-qui-n'a-jamais-existé-mais-présente-dans-un-autre-objet

La source