所以我有一些通用的 actionresults 暂时链接到各种视图。布局页面包含对 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 并调用该部分视图,但这并没有给我带来有利的结果。我敢肯定,我缺少一些简单的东西。
希望你们中的一些人能提供帮助。非常感谢。