2010-07-16 24 views
9

Sono nuovo di ASP.NET MVC e sto usando la versione 1.0 del framework. Ho una pagina Site.master con il seguente menu hard-codedMostra solo la voce di menu per gli utenti connessi

<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> 

voglio mostrare un elemento in più nel menu solo se gli utenti sono connessi. Qualcosa come "Visualizza i miei elenchi". Non ho alcun problema a fare questo in modo hacky sporca, così ho cercato

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

ma User non è valido in questo contesto. La mia domanda è come mostrare una voce di menu in più solo se gli utenti sono connessi?

+1

Uso HttpContext.User.Identity.IsAuthenticated nella mia vista per gestire le voci di menu. – Nate

+0

Qual è la differenza tra l'utilizzo di HttpContext.User.Identity.IsAuthenticated, Context.User.Identity.IsAuthenticated e Request.IsAuthenticated ?? –

risposta

11

È possibile accedere all'oggetto utente attraverso l'oggetto Context:

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

Ho anche appena scoperto che potevo usare

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

funziona in MVC 5 per me. Appena sostituito con la sintassi Razor (@). – JustJohn

5

Per MVC 4+ Facciamo così:

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