2010-07-16 5 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> 

Я хочу, чтобы показать дополнительный пункт в меню, только если пользователи вошедшего. Что-то вроде «Просмотр моих объявлений». У меня нет проблем делать это в грязной Hacky способом, так что я не пытался

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

но User не действует в этом контексте. Мой вопрос заключается в том, как показать дополнительный пункт меню, только если пользователи вошли в систему?

+1

Я использую HttpContext.User.Identity.IsAuthenticated, на мой взгляд, для управления пунктами меню. – Nate

+0

В чем разница между использованием HttpContext.User.Identity.IsAuthenticated, Context.User.Identity.IsAuthenticated и Request.IsAuthenticated ?? –

ответ

11

Вы можете получить доступ к объекту пользователя через объект Context:

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

я только что обнаружил, что я мог бы использовать

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

работает в MVC 5 для меня. Просто замените синтаксисом Razor (@). – JustJohn

5

Для MVC 4+ Мы делаем так:

@if(Context.User.Identity.IsAuthenticated) { 
    <li> @Html.ActionLink(... 
    } 
Смежные вопросы