Abrufen Session-Variablen in ASP.NET MVC 4 (razor, Ansicht)
Schrieb ich viele Webseiten mit PHP. Nun, ich habe zu erstellen-website mit ASP MVC 4 (c#) und ich bin stecken mit Sessions.
I. E. der Benutzer sollte gehen Sie auf die login-Seite, geben Sie seine/Ihre login-und Passwort. Wenn Sie korrekt sind, im controller setze ich die session mit UserId, wie diese:
Session["UserId"] = 10
Dieser Benutzer-id-Wert ist für die Anzeige PartialViews (login-Formular oder (nach Anmeldung) einige Anwendungs-Menüs). Wie kann ich diese UserId innerhalb Razor-Ansicht ?
Nachdem diese im Blick:
if (Session.UserId == 10) { @Html.Partial("LoggedMenu") }
habe ich mit Ausnahme StackOverflow. :/
- Können Sie fügen Sie eine ASP-oder ähnlich-tag bitte?
- Scheint in diesem Szenario sollten Sie nicht verwenden die Sitzung. UserId sollte ein Teil des Modells (oder wenn nicht Teil des Modells, den Sie verwenden konnte, ViewBag) zurückgegeben, um die Ansicht durch den controller.
- Sitzung sind böse, speziell wenn Sie mit Cloud-Hosting - ... beachten!
- Was ist die Ausnahme, die Sie bekommen?
- Haben Sie versucht, mit dem gleichen syntax für die Sitzung in der Ansicht als in den controller?
Du musst angemeldet sein, um einen Kommentar abzugeben.
du machst es falsch...
Session[<item name>]
gibt einen string zurück, sollten Sie vergleichen Sie mit einem string als gut, oder wirken, also entweder(int)Session["UserId"] == 10
oderSession["UserId"] = "10"
.du auch den Aufruf einer Eigenschaft, die nicht vorhanden ist
Session.UserId
nicht vorhanden, alsSession
ist wie eine NameValueCollection, rufen Sie es per Anfrage es ist Element name.am Ende, Sie sollten schreiben
Sagen Sie Ihr lernen, so möchte ich darauf hinweisen, 2 kurze Dinge:
Session[<item name>]
gibt ein Objekt, kein string.Abgesehen davon: für das identity-management, bessere Nutzung der out-of-the-box Mitgliedschaft-system
Unten ist ein Beispiel:
Controller:
Anzeigen:
Javascript: