2010-07-16 27 views
9

Tôi mới sử dụng ASP.NET MVC và đang sử dụng phiên bản 1.0 của khung công tác. Tôi có một trang site.master với trình đơn mã hóa sau đâyChỉ hiển thị mục menu cho người dùng đã đăng nhập

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

Tôi muốn hiển thị một mục bổ sung trên menu chỉ khi người dùng đăng nhập. Một cái gì đó như "Xem danh sách của tôi". Tôi không gặp vấn đề gì khi thực hiện điều này theo cách bẩn thỉu vì vậy tôi đã thử

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

nhưng User không hợp lệ trong ngữ cảnh này. Câu hỏi của tôi là làm thế nào để hiển thị một mục menu phụ chỉ khi người dùng đăng nhập?

+1

Tôi sử dụng HttpContext.User.Identity.IsAuthenticated trong chế độ xem của tôi để quản lý các mục menu. – Nate

+0

Sự khác nhau giữa việc sử dụng HttpContext.User.Identity.IsAuthenticated, Context.User.Identity.IsAuthenticated và Request.IsAuthenticated ?? –

Trả lời

11

Bạn có thể truy cập vào đối tượng người dùng thông qua các đối tượng Context:

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

Tôi cũng chỉ phát hiện ra rằng tôi có thể sử dụng

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

hoạt động trong MVC 5 cho tôi. Chỉ cần thay thế bằng cú pháp Razor (@). – JustJohn

5

Đối với MVC 4+ Chúng tôi làm như thế này:

@if(Context.User.Identity.IsAuthenticated) { 
    <li> @Html.ActionLink(... 
    } 
Các vấn đề liên quan