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 にコードを含めるのは好きではありません。Helpers ディレクトリの下の別のファイルにヘルパーを配置しようとしましたが、 @AccountName() は解決されなくなりました。理想的には、コードはストレート CS ファイルにある必要があります。
誰かがこれを設定するためのより良い方法を提案できますか?