web-dev-qa-db-fra.com

Récupérer les variables de session dans ASP.NET MVC 4 (rasoir, vue)

J'ai écrit de nombreux sites Web avec PHP. Maintenant, je dois créer un site Web avec ASP MVC 4 (c #) et je suis bloqué avec les sessions.

C'EST À DIRE. l'utilisateur doit se rendre sur la page de connexion, saisir son identifiant et son mot de passe. S'ils sont corrects, dans le contrôleur, j'ai défini la session avec UserId, comme ceci:

Session["UserId"] = 10

Cette valeur UserId est utilisée pour afficher les vues partielles (formulaire de connexion ou (après la connexion) certains menus d'application). Comment puis-je obtenir cet ID utilisateur dans la vue Razor?

Après cela dans View:

if (Session.UserId == 10) { @Html.Partial("LoggedMenu") }

j'ai une exception avec StackOverflow. : /

8
michaldck

vous le faites mal...

Session[<item name>] renvoie une chaîne, vous devez également la comparer avec une chaîne, ou la convertir, donc, (int)Session["UserId"] == 10 ou Session["UserId"] = "10".

vous invoquez également une propriété qui n'existe pas Session.UserId n'existera pas car Session est comme une NameValueCollection, vous l'appelez en demandant son nom d'élément.

à la fin, vous devez écrire

@if (Session["UserId"] == "10") { 
    Html.Partial("LoggedMenu"); 
}

Vous dites que vous apprenez, donc je voudrais souligner deux choses rapides:

  • Vous devriez profiter du cours ASP.NET MVC qui est disponible gratuitement sur la page d'accueil http://asp.net/mvc (côté droit lorsque vous lisez "Essential Videos")
  • Créez un projet MVC3 et voyez comment ils le font lorsqu'il est prêt à l'emploi avec l'adhésion
14
balexandre
@if (Session["UserId"] != null && Session["UserId"] == 10 ) { 
Html.Partial("LoggedMenu"); 
}

En dehors de cela: pour la gestion de l'identité, mieux utiliser le prêt à l'emploi système d'adhésion

2
Mathias F

Voici un exemple:

Manette:

    if (Session["pageInitCounter"] == null)
    {
        Session["pageInitCounter"] = 1;
    }
    else
    {
        int counter = Convert.ToInt32(Session["pageInitCounter"]);
        counter++;
        Session["pageInitCounter"] = counter;
    }

Vue:

@Html.Hidden("pageInitCounter", Session["pageInitCounter"])

Javascript:

alert($("#pageInitCounter").val());
1
Flea