在我的MVC5应用程序中,可以使用
在 _Layout.cshtml 页面中获取用户名@User.Identity.Name
我在表格 AspNetUsers 中添加了一个名为FullName的新字段,但我无法在_Layout.cshtml中显示它,它只显示名称!
如何在_Layout.cshtml中获取FullName的用户名?
答案 0 :(得分:1)
您可以通过User.Identity
处理用户的声明来执行此操作。当您处理用户的登录时,您应该能够从数据库中检索用户的信息,包括您希望存储的FullName属性。
您不能直接将此值设置为User.Identity.Name提供的值,但是您可以向Claims集合添加值,然后在需要时检索该值。但是,您首先需要将User.Identity转换为ClaimsIdentity实例。
控制器:
public ActionResult Index()
{
var fullName = "Name From Database";
var claimsIdentity = (ClaimsIdentity)User.Identity;
claimsIdentity.AddClaim(new Claim("FullName", fullName));
return View();
}
查看:
@{
var claims = (ClaimsIdentity)User.Identity;
var fullName = claims.FindFirstValue("FullName");
}
@(fullName)
您的视图和控制器都需要导入这些命名空间:
using System.Security.Claims
using Microsoft.AspNet.Identity
答案 1 :(得分:0)
好的..我通过使用session在我的所有应用程序中共享FullName来解决它
HttpContext.Current.Session.Add("UserFullName", UserFullName);
然后我可以在任何地方使用它
@Session["UserFullName"]
希望这个帮助
答案 2 :(得分:0)
您可以使用TempData或ViewData。我想你可以用反射。 你可以看看这个链接。