2011-01-11 62 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

我不明白你在说什么 –