Ich habe derzeit einen Typ, den ich in meine Controller injiziere, der zum Abrufen und Einstellen von Sitzungsdaten verwendet wird.Beseitigung statischer Eigenschaften - Welche Muster habe ich zur Verfügung?
Ich verwende dies, damit ich relevante Sitzungsinformationen wie _sessionData.Username
statt Session["username"]
erhalten kann.
Ich möchte diese Sitzungsinformationen in allen meinen Ansichten verwenden und hätte dies zuvor getan, indem ich die SessionData-Mitglieder statisch gemacht habe, anstatt die SessionData-Klasse in meinen Controller zu injizieren.
Ich möchte vermeiden, statische Mitglieder zu verwenden sowie das Objekt an die Ansicht in jedem Controller übergeben.
Welche Muster passen am besten zu dieser Art von Szenario? Was tun Sie, um das gleiche Problem zu lösen?
Ich bevorzuge es, genau zu wissen, auf was ich in der Sitzung zugreifen kann, anstatt magische Schlüsselzeichenfolgen zu verwenden. Meine SessionData-Klasse macht ziemlich genau das, was Ihre Methode oben tut. Die Frage ist, wie verwende ich das in meinen Ansichten, ohne es statisch zu machen? –
@JamieDixon Entschuldigung, das habe ich verpasst und meine Antwort aktualisiert. –
Danke Justin. Bis jetzt scheint keine der Lösungen, die ich kenne, sehr elegant zu sein. Zugreifen auf statische Klassenmitglieder mithilfe von Magic Strings, um direkt auf das Sitzungsobjekt zuzugreifen und neue Objekte in der Ansicht zu erstellen. Es muss eine elegantere Möglichkeit geben, auf geteilte Informationen in einer Vielzahl von Ansichten zuzugreifen.Vielleicht mit einem Basis-Controller, um die benutzerdefinierte Session-Klasse für jede Anfrage in den View-Bag einzufügen. –