Avatar billede hemmelig_ninja Nybegynder
11. november 2003 - 15:27 Der er 7 kommentarer

variabler fra sessions objekt til klasse

Hej.

Jeg har et lille problem nogen af jer derude måske kan hjælpe mig med.

Jeg har et userobjekt som kopieres ind i sessionsobjektet i en webform's codebehind ((User)Session["user"] = oUser)

Jeg vil nu gerne tilgå dette userobjekt fra en anden klasse, men jeg kan ikke tilgå mit sessionsobejekt da det ikke er en webform's codebehind jeg arbejder fra. dvs jeg kan ikke bare skrive
User oUser = new User((User)Sesssion["user"]);
hvad skal jeg gøre?
Jeg er næsten 100% sikker på at jeg har alle de "using" med jeg behøver.

Hjæææælp!

Tak på forhånd!
Avatar billede hemmelig_ninja Nybegynder
11. november 2003 - 15:30 #1
Jeg har forresten lavet en overload af user som laver en shallowcopy i constructoren, så det er derfor jeg mener at det burde virke.
public User(User OrgUser)
        {
            blnLoggedIn        = OrgUser.blnLoggedIn;
            intId            = OrgUser.intId;
            strFirstName    = OrgUser.strFirstName;
            strLastName        = OrgUser.strLastName;
            strEmail        = OrgUser.strEmail;
            strPassword        = OrgUser.strPassword;
              }
Avatar billede finger Nybegynder
11. november 2003 - 15:57 #2
tjo. jeg ville nok give et Sesseionobject med i kaldet til din anden klasse...
Avatar billede hemmelig_ninja Nybegynder
11. november 2003 - 16:15 #3
den anden klasse kan heller ikke tilgå sessionen, det er envejs kommunikation. Sessions objektet kan kopiere en instans af klasse til sig, men den kan kun tilgås via en codebehindting. dvs hvis jeg skal have id'et med over skal jeg kalde mit nye objekt udefra og smide en parameter med f.eks id'et som jeg har brug for, med. totalt åndsvagt, jeg håbede der var en nemmere måde.
Avatar billede hemmelig_ninja Nybegynder
11. november 2003 - 16:16 #4
tror jeg da...
Avatar billede finger Nybegynder
12. november 2003 - 10:46 #5
Jeg mener nu at jeg engang har lavet noget lignende hvor jeg havde en klasse der ikke var codebehind men skulle bruge Session. Der mener jeg at jeg puttede nogle using statements ind i klassen (så den kendte til Session klassen) og gav en reference til session med i kaldet til klassen fra codebehind. Detvirkede fint...
Avatar billede hemmelig_ninja Nybegynder
13. november 2003 - 11:07 #6
Det er nemt nok at få data med, når man bare har en codebehind. Så kunne jeg for den sags skyld bare oprette et objekt som er en kopi af det der ligger i sessionsklasse, og smide det med som en parameter til min klasse. Det var lige det jeg ville undgå. Skulle bare høre om det kunne lade sig gøre at tilgå sessionen direkte fra min klasse, men det giver jo også mening at man ikke kan det. Det er en "webting" og det er jeg helle rikke interesseret i at have i min klasse. Desuden giver det også mening på den måde at sessionsobjektet ikke er instansieret når man bare arbejder i en alm klasse.
Avatar billede www.jakub.dk Nybegynder
31. marts 2004 - 14:44 #7
Du kan bruge følgende løsning:
public class MySessionUtility
{
private static HttpSessionState GetSession()
{
return System.Web.HttpContext.Current.Session;
}
public static object GetSessionVar(string var)
{
HttpSessionState MySession = GetSession();
object SessionVaerdi = "";
if (MySession[var] != null)
SessionVaerdi = (object) MySession[var];
return SessionVaerdi;
}
}
Og fra den klasse hvori du vil hente en session variabel kan du bruge denne kald:

User oUser = (User)Util.HentSessionVal("user");

Du kan bare bruge koden
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