ASP.NET MVC 4 内联网模板 - 显示用户全名

本文关键字:显示 用户 全名 NET MVC 内联网 ASP | 更新日期: 2023-09-27 18:36:28

>我在VS 2012 RC下使用MVC 4的内联网模板。右上角显示域''用户名,我希望它显示全名。

我能够在_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 中。我试图将帮助程序放在帮助程序目录下的单独文件中,但 @AccountName() 不再解析。理想情况下,代码实际上应该在直接的CS文件中。

谁能建议更好的方法来设置它?

ASP.NET MVC 4 内联网模板 - 显示用户全名

您当然可以将代码放在常规的 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>