2011-01-11 85 views
13

我想從我的母版頁訪問User.Identity,所以我可以找出哪個用戶登錄,但是我不能讓它工作。如果我在母版頁導入System.Security.Principal它沒有什麼區別:從主頁面訪問User.Identity

<%@ Import Namespace="System.Security.Principal" %> 

我可以罰款訪問它,如果我嘗試在控制器內。

任何想法我需要做什麼?

回答

51

那通過HttpContext.Current.User.Identity呢?

8

<%=HttpContext.Current.User.Identity.Name %>將顯示當前用戶名稱 HttpContext.Current.User將獲得IPrincipal對象。

這裏是一個母版頁只顯示標題中的用戶名:

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title> 
     <asp:ContentPlaceHolder ID="TitleContent" runat="server" /> 
    </title> 
    <link href="../../Content/Style.css" rel="stylesheet" type="text/css" /> 
</head> 
<body> 
    <div class="page"> 
     <div id="header"> 
      <div id="title"> 
       <h1 id="maintitle"> 
        <%=HttpContext.Current.User.Identity.Name %> 
       </h1> 
      </div> 
     </div> 
     <div id="main"> 
      <asp:ContentPlaceHolder ID="MainContent" runat="server" /> 
     </div> 
    </div> 
</body> 
</html> 
0

你可以從這個:

Context.User.Identity.Name

2

您可以使用HttpContext.Current.User.Name但你需要記住Master Page代碼僅在從屬頁面代碼之後執行。所以只要你沒有在母版頁中執行任何安全邏輯,你就可以使用這個變量。

3

我覺得它的工作

HttpContext.Current.User.Identity.Name.ToString() 

Page.User.Identity.Name.ToString() 
+0

這是什麼插件相比,接受的答案? – beresfordt

+0

'Page.User'似乎比'HttpContext.Current.User'更清潔。只是一個品味問題,因爲他們做同樣的事情。 –

+0

我不明白你在說什麼 –