Avatar billede sunezapa Nybegynder
22. august 2002 - 21:27 Der er 11 kommentarer og
2 løsninger

Session virker ikke i .vb-fil men godtnok i ascx.vb-fil

Hvis jeg på en ascx.vb-side skriver
  Session("HuskMig") = "Mig"
så virker det fint :-)

Hvis jeg skriver det samme i en .vb-fil (en class-fil),
så meldes der "Name 'Session' is not declared" :-(

Eneste forskel jeg umiddelbart kan se er, at ascx-filen har "Inherits System.Web.UI.UserControl", men det giver ingen mening at bruge UserControl på .vb-siden.
Dog sker der en forskel i fejlbeskeden hvis jeg alligvel indsætter denne "inherits..", nemlig en lang smøre " Cannot refer to an instance member of a class from within a shared method or shared member initializer without an explicit instance of the class."... 
Nogen forslag...???
Avatar billede odegaard Nybegynder
22. august 2002 - 21:37 #1
Jeg tror det er fordi den anden fil er et standard vb-modul, som ikke kender noget til websider og dermed sessionvariabler.
Din ascx.vb er en del af en "ægte" webside, så der er Session-variabler selvfølgelig kendte.
Avatar billede sunezapa Nybegynder
22. august 2002 - 21:43 #2
Så det kan slet ikke lade sig gøre :-(  ???
Venter lige å ser om der er andre med en anden mening... håbe-håbe...
ellers får du point,  snøft
Avatar billede odegaard Nybegynder
22. august 2002 - 22:08 #3
jeg sagde intet om at det ikke kan lade sig gøre. Hvis det kan lade så gøre at få fat i web.config indstillinger, kan man vel også med session. Det er bare kanp så enkelt.
Avatar billede odegaard Nybegynder
22. august 2002 - 22:12 #4
Det kan være du kan få adgang til dem via HttpSessionState eller System.Web.SessionState.
Avatar billede sunezapa Nybegynder
23. august 2002 - 09:25 #5
jeg har faktisk forsøgt med begge dele - men de vil ikke ha' nogen .session("xx") efter sig, kun noget der hedder ".equals" som kan sammenligne med noget andet, det ligner en readonly-property...
I ObjectBrowseren finder jeg nu 4 session-objecter, og de er allesammen readonly, kun een er overrideable: "System.Web.UI.Page.Session".
Jeg må vel gøre noget andet, f.eks. tildele værdien til en PublicSharedVAriable og sætte Session i et aspx eller ascx-modul ?
Avatar billede odegaard Nybegynder
23. august 2002 - 09:52 #6
Jeg plejer altid at benytte Session-værdier som parametre til de funktioner jeg kalder i mine moduler. F.eks.
minVaerdi = mitModul.minFunktion( Session("enVærdi"), True )

Det er vel en ganske udemærket og fleksibel måde at gøre tingene på (synes jeg). På denne måde bliver dit modul vel også mere fleksibelt.
Avatar billede sunezapa Nybegynder
23. august 2002 - 10:13 #7
Nu er du vist ude i noget juks...?
En sessionvariabel svarer lidt til en cookie, og er god at bruge hvis du vil tilgå en variabel fra alle moduler, altid (indtil brugerens browser lukkes).

Et funktionskald med en parameter overfører blot en pointer til parameteren, hvilket er langt mere "økonomisk" end at skrive/hente hele variabelen til/fra en sessionvariabel.
Hvis parameteren er enkle værdier vil du muligvis ikke mærke så meget forskel, men hvis det f.eks. er et helt dataset, så mærkes det!

Det må være mest enkelt blot at skrive funktionen som ..=minFunktion("enVærdi"), eller =minFunktion(enVAriabelMedMinVærdi) istedet for at først at skrive værdien til en sessionVariabel...?
Avatar billede odegaard Nybegynder
23. august 2002 - 11:15 #8
Du gemmer da forhåbentlig ikke et helt dataset i din Session-variabel? Det er da hvad jeg ville kalde juks.
Avatar billede sunezapa Nybegynder
23. august 2002 - 11:21 #9
Helt enig! Det var jo det jeg skrev, at det ikke er så smart at bruge Sessions som parameter-overførsel til en funktion! Eller har jeg misforstået din måde at bruge sessions på i dit indlæg med "Jeg plejer altid at benytte..."?
Avatar billede odegaard Nybegynder
23. august 2002 - 11:34 #10
Aner vist ikke hvad du har forstået :-)
Altså, lad os sige at en bruger er logget ind med et brugerID.
Et modul returnerer noget data baseret på ID'et. Istedet for at lave en funktion uden parametre, der returnerer data, kalder jeg funktionen med ID'et som parameter. ID'et har jeg haft gemt i en Session-variabel siden personen loggede på.

At jeg så kalder session-værdien før eller siden, kan vel være godt og vel flintrende ligegyldigt.
Avatar billede sunezapa Nybegynder
23. august 2002 - 11:42 #11
Okay, det er fint.
Jeg tolkede din sætning "Jeg plejer altid at benytte Session-værdier som parametre til de funktioner jeg kalder i mine moduler." således at du generelt brugte sessionværdier til at overføre parametre til alle dine funktioner...
Men jeg er vist ikke kommet videre med mit forsøg på at gemme en værdi i en session fra en vb.side, så nu finder jeg på noget andet.
Avatar billede sunezapa Nybegynder
29. august 2002 - 11:15 #12
fandt ingen løsning, jeg laver noget andet, der er jo nok at ta fat på...
Avatar billede paultodobom Nybegynder
31. maj 2005 - 09:04 #13
Bedre sent end aldrig... jeg synes, at det er rart at kunne finde en løsning. Derfor en noget sen kommentar.
Man kan nå en session variabel i et VB modul sådan her:

Filnavn: MitModul.vb:

Imports System.Web

Namespace EtNamespaceMedSammeNavnSomPaaDenSideHvorSubenKaldes
    Module MitModul
        ' Nulstiller en række udvalgte sessionvariable og ikke alle variable
        Public Sub NulstilSessions()
            HttpContext.Current.Session.Remove("Var1")
            HttpContext.Current.Session.Remove("Var2")
        End Sub

    End Module

End Namespace


På en *.aspx.vb side kan sub'en kaldes i forbindelse med en OnClick event:

.
.
.
Private Sub AnnullerKnap_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AnnullerKnap.Click
    ' Her indsætter vi noget test-indhold
    Session("Var1") = "Var1"
    Session("Var2") = "Var2"
    ' Her udskriver vi lige test-indholdet
        Response.Write(Session("Var1"))
        Response.Write(Session("Var2"))
    ' Kald sub'en som nulstiller sessionvariablerne
        NulstilSessions()
    ' Nu udskriver vi igen vaiablene, men nu er de tomme (faktisk bliver de genoprettet, men indeholder ikke noget)
        Response.Write(Session("Var1") & " tom")
    Response.Write(Session("Var2") & " tom")
End Sub
.
.
.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester