14. oktober 2001 - 13:39Der er
27 kommentarer og 1 løsning
Gemme en class i et session objekt.
Jeg prøver at gemme en class i et session objekt, men når jeg skal have fat i classen på en ny side får jeg en fejlmeddelelse, hvad skal ændres for at det fungerer. Jeg har brugt nedenstående kode til at teste med. Når classen kan udskrive sin testværdi, der blev sat på forrige side er jeg tilfreds. <% Option Explicit %><!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"> <html> <head><title>Page title</title></head><body><% class testObj private testVaerdi
public sub SetVaerdi(vaerdi) testVaerdi = vaerdi end sub public function hent() hent = testVaerdi end function end class
if request.querystring(\"ObjErDer\") then response.write \"Klassen indeholder fra sidste side :\" & session(\"objTes\").hent & \",-\" else set session(\"objTes\") = new testObj session(\"objTes\").SetVaerdi(\"En lille test.\") response.write \"Klassen indeholder :\" & session(\"objTes\").hent & \",-\" end if
Jeg har prøvet med følgende, men det fungerer heller ikke. <% Option Explicit %><!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"> <html> <head><title>Page title</title></head><body><% class testObj private testVaerdi
public sub SetVaerdi(vaerdi) testVaerdi = vaerdi end sub public function hent() hent = testVaerdi end function end class dim clsTestObj if request.querystring(\"ObjErDer\") then clsTestObj = session(\"objTes\")
response.write \"Klassen indeholder :\" & clsTestObj.hent & \",-\" \' response.write \"Klassen indeholder fra sidste side :\" & session(\"objTes\").hent & \",-\" else set session(\"objTes\") = new testObj session(\"objTes\").SetVaerdi(\"En lille test.\") response.write \"Klassen indeholder :\" & session(\"objTes\").hent & \",-\" end if
Fejltype: Der opstod en Microsoft VBScript-kørselsfejl (0x800A01B6) Objektet understøtter ikke denne egenskab eller metode: \'hent\' /test.asp, line 19
Browsertype: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Side: GET /test.asp
Klokkeslæt: 14. oktober 2001, 21:08:56
Yderligere oplysninger: Microsoft Support
Ved stump kode Tekniske oplysninger (for supportteknikere)
Fejltype: Der opstod en Microsoft VBScript-kørselsfejl (0x800A01A8) Et objekt er obligatorisk: \'\' /test.asp, line 18
Browsertype: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Hvis man i det andet stykke kode erstatter clsTestObj = session(\"objTes\") med Set clsTestObj = session(\"objTes\") fås samme fejlmeddelse som i den første stump kode
set clsTestObj = new testObj clsTestObj.SetVaerdi(\"En lille test.\") session(\"objTes\") = clsTestObj \'<-- Feljmeddelse som neden stående response.write \"Klassen indeholder :\" & clsTestObj.hent & \",-\" Tekniske oplysninger (for supportteknikere)
Fejltype: Session-objekt, ASP 0185 (0x80020003) En standardegenskab for objektet blev ikke fundet. /test.asp, line 23
Browsertype: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
<% Option Explicit %><!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"> <html> <head><title>Page title</title></head><body><% class testObj private testVaerdi
public sub SetVaerdi(vaerdi) testVaerdi = vaerdi end sub public function hent() hent = testVaerdi end function end class dim clsTestObj if request.querystring(\"ObjErDer\") then
set clsTestObj = session(\"objTes\")
response.write \"Klassen indeholder :\" & clsTestObj.hent & \",-\" \'<-- Fejl \' response.write \"Klassen indeholder fra sidste side :\" & session(\"objTes\").hent & \",-\" else set clsTestObj = new testObj clsTestObj.SetVaerdi(\"En lille test.\") set session(\"objTes\") = clsTestObj \'<-- Feljmeddelse som neden stående response.write \"Klassen indeholder :\" & clsTestObj.hent & \",- <br>\" response.write \"Klassen indeholder :\" & session(\"objTes\").hent & \",- <br>\"
end if
%> <br><a href=test.asp?ObjErDer=true>Test</a>
</body> </html>
Giver følgend fejlmelding:
Tekniske oplysninger (for supportteknikere)
Fejltype: Der opstod en Microsoft VBScript-kørselsfejl (0x800A01B6) Objektet understøtter ikke denne egenskab eller metode: \'hent\' /test.asp, line 19
Browsertype: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
\' response.write \"Klassen indeholder :\" & clsTestObj.hent & \",-\" response.write \"Klassen indeholder fra sidste side :\" & session(\"objTes\") & \",-\" \'<--Fejl .hent skal være der for at vise at functionen hent skal kaldes. else set clsTestObj = new testObj clsTestObj.SetVaerdi(\"En lille test.\") set session(\"objTes\") = clsTestObj \'<-- Feljmeddelse som neden stående session(\"objTes\").SetVaerdi(\"En lille test.\") response.write \"Klassen indeholder :\" & clsTestObj.hent & \",- <br>\" \'<-- Fungerer fint response.write \"Klassen indeholder :\" & session(\"objTes\").hent & \",- <br>\" \'<-- Fungerer fint
end if
Fejl:
Tekniske oplysninger (for supportteknikere)
Fejltype: Der opstod en Microsoft VBScript-kørselsfejl (0x800A01B6) Objektet understøtter ikke denne egenskab eller metode /test.asp, line 20
Browsertype: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
else set clsTestObj = new testObj clsTestObj.SetVaerdi(\"En lille test.\") set session(\"objTes\") = clsTestObj \'<-- Feljmeddelse som neden stående session(\"objTes\").SetVaerdi(\"En lille test.\") response.write \"Klassen indeholder :\" & clsTestObj.hent & \",- <br>\" \'<-- Fungerer fint response.write \"Klassen indeholder :\" & session(\"objTes\") & \",- <br>\" \'<-- Fejl
end if
Får jeg følgende fejl
Tekniske oplysninger (for supportteknikere)
Fejltype: Der opstod en Microsoft VBScript-kørselsfejl (0x800A01B6) Objektet understøtter ikke denne egenskab eller metode /test.asp, line 27
Browsertype: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
set clsTestObj = new testObj clsTestObj.SetVaerdi(\"En lille test.\") session(\"objTes\") = clsTestObj \'<-- Feljmeddelse som neden stående response.write \"Klassen indeholder :\" & clsTestObj.hent & \",-\" Tekniske oplysninger (for supportteknikere)
Fejltype: Session-objekt, ASP 0185 (0x80020003) En standardegenskab for objektet blev ikke fundet. /test.asp, line 23
Den sidste fejlmeddellelse betyder at objektet ikke har en \"default\" property. Dvs at an metode som skal kaldes hvis man kalder objekter uden angivelse af metode. session(\"objTes\") = clsTestObj bruges ikke til at sætte session(\"objTes\") lig med dit objekt. Der forventes i stedet en simpel datatype. Du skal bruge SET session(\"objTes\") = clsTestObj.
session(\"objTes\").SetVaerdi(\"En lille test.\") burde være OK.
Dette fejler : response.write \"Klassen indeholder :\" & clsTestObj.hent
fordi hent er en funktion og ikke en sub. Skriv i stedet: response.write \"Klassen indeholder :\" & clsTestObj.hent()
Hvis du på andre sider vil bruge session(\"objTes\"), skal definitionen af dit objekt også defineres her.
class testObj private testVaerdi public proeryt public sub SetVaerdi(vaerdi) testVaerdi = vaerdi end sub public function hent hent = testVaerdi end function end class dim clsTestObj Jer har prøvet med følgende: if request.querystring(\"ObjErDer\") then set clsTestObj = session(\"objTes\") \' response.write \"Klassen indeholder :\" & clsTestObj.hent() & \",-\" <-----hvis den ikke er udkommenteret giver den samme fejlmeddelse. response.write \"Klassen indeholder fra sidste side :\" & session(\"objTes\").hent() & \",-\" \'<--Fejl som nedstående else set clsTestObj = new testObj clsTestObj.SetVaerdi(\"En lille test.\") set session(\"objTes\") = clsTestObj \'<-- \' session(\"objTes\").SetVaerdi(\"En lille test.\") response.write \"Klassen indeholder :\" & clsTestObj.hent() & \",- <br>\" \'<-- Fungerer fint response.write \"Klassen indeholder :\" & session(\"objTes\").hent() & \",- <br>\" \'<-- Fungerer fint end if
Giver følgende fejl
Fejltype: Der opstod en Microsoft VBScript-kørselsfejl (0x800A01B6) Objektet understøtter ikke denne egenskab eller metode: \'hent\' /test.asp, line 19
Bør hent ikke defineres som public function hent()
Når du tester for request.querystring(\"ObjErDer\") then lader det til at objektet ikke er lagt i sessions-objektet eller objektdefinitionen ikke kan findes. Jeg har lykkedes med at komme objekter i session-objektet, så det undrer mig lidt at det ikke funker her.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.