2010-07-16 21 views
9

Je suis nouveau sur ASP.NET MVC et j'utilise la version 1.0 du framework. J'ai une page Site.master avec le menu suivantAfficher l'élément de menu uniquement pour les utilisateurs connectés

<div id="menucontainer"> 
    <ul id="menu">    
    <li><%= Html.ActionLink("Home", "Index", "Home")%></li> 
    <li><%= Html.ActionLink("Drivers", "List/?category=Drivers", "Product")%></li> 
    <li><%= Html.ActionLink("Irons", "List/?category=Irons", "Product") %></li> 
    <li><%= Html.ActionLink("Wedges", "List/?category=Wedges", "Product") %></li> 
    <li><%= Html.ActionLink("Putters", "List/?category=Putters", "Product") %></li> 
    </ul> 
</div> 

codé en dur Je veux montrer un élément supplémentaire dans le menu que si les utilisateurs sont connectés. Quelque chose comme "Voir mes annonces". Je n'ai pas de problème à faire cela d'une manière hacky sale, je l'ai essayé

<% if (User.Identity.IsAuthenticated) ... 

mais User est pas valable dans ce contexte. Ma question est de savoir comment afficher un élément de menu supplémentaire uniquement si les utilisateurs sont connectés?

+1

J'utilise HttpContext.User.Identity.IsAuthenticated dans ma vue pour gérer les éléments de menu. – Nate

+0

Quelle est la différence entre l'utilisation de HttpContext.User.Identity.IsAuthenticated, Context.User.Identity.IsAuthenticated et Request.IsAuthenticated? –

Répondre

11

Vous pouvez accéder à l'objet utilisateur via l'objet Contexte:

<% if(Context.User.Identity.IsAuthenticated) ... 
9

Je viens aussi découvert que je pouvais utiliser

<% if (Request.IsAuthenticated) { %> 
    <li><%= Html.ActionLink("View my Listings", "MyListings", "List")%> 
<% } %> 
+0

fonctionne dans MVC 5 pour moi. Juste remplacé par la syntaxe Razor (@). – JustJohn

5

Pour MVC 4+ Nous aimons ceci:

@if(Context.User.Identity.IsAuthenticated) { 
    <li> @Html.ActionLink(... 
    } 
Questions connexes