2010-07-16 32 views
9

我是ASP.NET MVC的新手,正在使用框架的1.0版本。我有一個頁面的Site.Master用下面的硬編碼菜單僅顯示登錄用戶的菜單項

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

我想只顯示用戶是否登錄的菜單上的額外項目。類似於「查看我的房源」。我沒有問題,在一個骯髒的哈克的方式做這個,所以我試圖

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

User是不是在這方面有效。我的問題是如何僅在用戶登錄時顯示額外的菜單項?

+1

我在我的視圖中使用HttpContext.User.Identity.IsAuthenticated來管理菜單項。 – Nate 2010-07-16 21:11:44

+0

使用HttpContext.User.Identity.IsAuthenticated,Context.User.Identity.IsAuthenticated和Request.IsAuthenticated有什麼區別? – 2010-07-16 21:32:25

回答

11

您可以通過上下文對象訪問用戶對象:

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

我也才發現,原來我可以用

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

適用於我的MVC 5。剛剛用Razor語法(@)替換。 – JustJohn 2015-12-17 05:41:48

5

對於MVC 4+我們這樣做:

@if(Context.User.Identity.IsAuthenticated) { 
    <li> @Html.ActionLink(... 
    } 
相關問題