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. : /
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:
@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
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());