Come faccio a percorrere una collezione di classic ASP?
-
08-06-2019 - |
Domanda
Voglio essere in grado di fare:
For Each thing In things
End For
ASP CLASSICO - NON .NETTO!
Soluzione
Qualunque sia la vostra [cose] sono devono essere scritti al di fuori di VBScript.
In VB6, è possibile scrivere una Raccolta Personalizzata di classe, quindi, è necessario compilare una DLL ActiveX e registrarlo sul tuo server web per l'accesso.
Altri suggerimenti
Qualcosa di simile a questo?
dim cars(2),x
cars(0)="Volvo"
cars(1)="Saab"
cars(2)="BMW"
For Each x in cars
response.write(x & "<br />")
Next
Vedere www.w3schools.com.
Se si desidera associare le chiavi e i valori utilizzare un oggetto dictionary invece:
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
Il più vicino si sta andando ottenere è l'uso di un Dizionario (come detto da Pacifika)
Dim objDictionary
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.CompareMode = vbTextCompare 'makes the keys case insensitive'
objDictionary.Add "Name", "Scott"
objDictionary.Add "Age", "20"
Ma io loop attraverso i miei dizionari come una collezione
For Each Entry In objDictionary
Response.write objDictionary(Entry) & "<br />"
Next
È possibile scorrere l'intero dizionario in questo modo la scrittura dei valori, che sarebbe simile a questa:
Scott
20
È anche possibile fare questo
For Each Entry In objDictionary
Response.write Entry & ": " & objDictionary(Entry) & "<br />"
Next
Che dovrebbe produrre
Name: Scott
Age: 20
Un approccio che ho usato prima è quella di utilizzare una proprietà della collezione, che restituisce un array, che possono essere iterati.
Class MyCollection
Public Property Get Items
Items = ReturnItemsAsAnArray()
End Property
...
End Class
Scorrere come:
Set things = New MyCollection
For Each thing in things.Items
...
Next
Come Brett ha detto, è meglio utilizzare un componente di visual basic per creare collezioni.Dizionario oggetti non sono molto comunemente utilizzati in ASP se non per necessità specifiche applicazioni di base.
Essere MOLTO attentamente sull'uso di VB Script Oggetto del Dizionario!
Appena scoperto questo "autovivication"cosa, nativo su questo oggetto: http://en.wikipedia.org/wiki/Autovivification
Così, quando è necessario confrontare i valori, non usare MAI un boolen confronto come:
If objDic.Item("varName") <> "" Then
...
Questo automaticamente aggiungere la chiave "varName
"per il dizionario (se non esiste, con un valore vuoto) , per la realizzazione di valutare l'espressione booleana.
Se necessario, utilizzare invece If objDic.Exists("varName")
.
Basta passare un paio di giorni a bussare pareti, con questo Mcrosoft "funzione"...
vbscript-dizionario-oggetto-creare-un-tasto-che-non-esiste-ma-oggi-in-un-altra-oggetto