そのため、当面の間、さまざまなビューにリンクする一般的なアクション結果がいくつかあります。レイアウト ページには、ページごとに必要なログイン ユーザー名を設定するための adfs への呼び出しが含まれています。次のようになります。
<div class="float-right">
<section id="login">
Hello, <span class="username">@ViewBag.GivenName @ViewBag.LastName</span>!
</section>
</div>
ホームコントローラーで、このログイン名が機能するのは、次のコードです。
public ActionResult Index()
{
ClaimsIdentity claimsIdentity = Thread.CurrentPrincipal.Identity as ClaimsIdentity;
Claim claimGivenName = claimsIdentity.FindFirst("http://sts.msft.net/user/FirstName");
Claim claimLastName = claimsIdentity.FindFirst("http://sts.msft.net/user/LastName");
if (claimGivenName == null || claimLastName == null)
{
ViewBag.GivenName = "#FAIL";
}
else
{
ViewBag.GivenName = claimGivenName.Value;
ViewBag.LastName = claimLastName.Value;
}
return View();
}
しかし、前述のように、ユーザーが各リンク (actionresult) に移動したときにこれを表示する必要があります。したがって、これを実現するには、上記のすべてのコードを各 actionresult に投稿する必要があります。
あるアクションから別のアクションにコードを複製するのではなく、これを各アクション結果全体に適用する方法はありますか? _Layout.cshtml の actionresult に登録して、そのパーシャルビューを呼び出そうとしましたが、好ましい結果は得られませんでした。私が見逃しているのは単純なものだと確信しています。
あなたの何人かが助けてくれることを願っています。どうもありがとう。