【问题标题】:ASP.NET MVC 4 Intranet Template - Show Users Full NameASP.NET MVC 4 Intranet 模板 - 显示用户全名
【发布时间】:2012-06-08 01:59:18
【问题描述】:

我在 VS 2012 RC 下使用 MVC 4 的 Intranet 模板。右上角显示域\用户名,我希望它显示全名。

我能够在 _Layout.cshtml 中使用它。我在正文中包含了以下助手 -

@helper AccountName()
{       
    using (var context = new System.DirectoryServices.AccountManagement.PrincipalContext(System.DirectoryServices.AccountManagement.ContextType.Domain))
    {
        try
        {
            var principal = System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(context, User.Identity.Name); 
            @String.Concat(principal.GivenName, " ", principal.Surname) 
        }
        catch { }

    } 
}

(我还必须在引用中包含 System.DirectoryServices.AccountManagement)

然后我可以在问候代码中使用帮助器,如下所示 -

 <section id="login">
      Hello, <span class="username">@AccountName()</span>!
 </section>

这没问题,但我不喜欢 _Layout.cshtml 中的代码。我试图将帮助程序放在 Helpers 目录下的单独文件中,但 @AccountName() 不再解决。理想情况下,代码应该在一个直接的 CS 文件中。

谁能提出更好的设置方法?

【问题讨论】:

  • 这对我不起作用。我把那个助手放在我的 _layout 的顶部,它说命名空间 DirectoryServices 的目录不可用。我在应用程序“引用”中添加了它......我错过了什么?

标签: c# asp.net-mvc asp.net-mvc-4


【解决方案1】:

您当然可以将代码放在常规 C# 文件中,例如

AccountUtil.AccountName()

在这种情况下,您需要通过放置来包含您的助手所在的命名空间

@using My.App.Helpers  @* Change to your own namespace *@

在任何想要引用该代码的视图的顶部。

或者,您可以通过编辑 Views 目录中的 web.config 文件(不是项目级别的文件)使该命名空间可用于所有视图

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <!-- Don't edit out the stuff that's already here! -->
        <add namespace="My.App.Helpers" />  <!-- Add your own namespace here -->
      </namespaces>
    </pages>
  </system.web.webPages.razor>

【讨论】:

  • 还有一个问题 - 我显然只想搜索一次 Active Directory,因此我在帮助程序类中设置了一个静态变量来包含该值。 ASP.NET MVC 中是否有“最佳实践”来做这种事情?
猜你喜欢
  • 2011-07-14
  • 2011-12-21
  • 1970-01-01
  • 2011-05-30
  • 2011-07-26
  • 2020-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多