Laden...

Eigene Klasse als SessionObjekt und Zugriff darauf im SQLDatasource

Erstellt von UltraEdit vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.404 Views
U
UltraEdit Themenstarter:in
57 Beiträge seit 2013
vor 6 Jahren
Eigene Klasse als SessionObjekt und Zugriff darauf im SQLDatasource

Hallo Zusammen...

Ich benutze eine Klasse(LoggedInUserStempelUhr) als "SessionObjekt".
Dadurch verspreche ich mir "Ordnung und Übersicht" über die benutzten Felder...

Anstatt:
session("dbid")
session("dbuser")
...usw.

Habe ich ALLE Felder "ordendlich" in einer Klasse:


Session["TheUser"] = new LoggedInUserStempelUhr();
(Session["TheUser"] as LoggedInUserStempelUhr).SetUser(dbuser, dbid, dbname, dbpass, true, bIsAdmin);

Zugriff per Code habe ich über(z.B.):


if ((Session["TheUser"] as LoggedInUserStempelUhr).bUserIsLoggedIn) Response.Redirect("wellcome.aspx", false);

  • Soweit so gut...Oder vergewaltige ich schon damit alle gängigen Techniken?

Probleme macht mir nun der Zugriff auf das Session Objekt in einem SQLDataSource:
z.B. im Select des SQLDatasource:


<SelectParameters>
	<asp:SessionParameter DbType="Int32" Name="MiTaID" SessionField="(Session["TheUser"] as LoggedInUserStempelUhr).Login_ID" />
</SelectParameters>

(Das funktioniert leider nicht...)

Wie müsste ich in einem SQLDataSource auf ein Feld der SessionKlasse zugreifen um Ihn als SessionParameter zu benutzen?

Vielen Dank im Voraus und lieben Gruß...
UltraEdit.

1.029 Beiträge seit 2010
vor 6 Jahren

Hi,

so wie ich das sehe hast du im SessionParameter schlicht keinen Zugriff auf ein Property innerhalb einer SessionVariable, welche ja auch eher für direkte Werte gedacht sind.

Auf folgender Seite sind Beispiele verlinkt:
https://stackoverflow.com/questions/9399522/how-to-get-a-value-for-an-asp-net-session-parameter-from-property-of-session-obj

LG

U
UltraEdit Themenstarter:in
57 Beiträge seit 2013
vor 6 Jahren

Danke für die Info Taipi88...

Hab ich fast geahnt...

Ich bin auch auf die in deinem Link gezeigten 2. Lösung gekommen.


sqlDataSrc.SelectParameters["id"].DefaultValue = myWidget.ID;

Ich hoffte, das es eine "schönere" Lösung gibt, als mit "frei erfundenen Wörtern" weiter arbeiten zu müssen.
Sprich: Aus dem Objekt ein Teil der Properties wieder in SessionVariablen zu pressen.
Schließlich ist ja ALLES immer streng und ordentlich(Klassen, Felder, usw.) 8)

16.828 Beiträge seit 2008
vor 6 Jahren

Sessions sind ja auch eigentlich nicht dafür gedacht sie voll zu laden 😉
Im Gegenteil: gerade vollgeladene, unüberlegte Sessions machen Probleme bei unachtsamer, paralleler Verwendung; sprich über mehrere Tabs/Fenster hinweg.