仅为登录用户显示菜单项

时间:2010-07-16 21:08:38

标签: asp.net-mvc

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

我想在用户登录时在菜单上显示额外的项目。像“查看我的房源”之类的东西。我以肮脏的hacky方式做这件事没问题,所以我试过了

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

User在此上下文中无效。我的问题是如何仅在用户登录时显示额外的菜单项?

3 个答案:

答案 0 :(得分:11)

您可以通过Context对象访问User对象:

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

答案 1 :(得分:10)

我也刚刚发现我可以使用

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

答案 2 :(得分:7)

对于MVC 4+我们喜欢这样:

{{1}}