在_Layout.cshtml中显示FullName

时间:2017-10-28 16:02:49

标签: c# asp.net-mvc razor model-view-controller

在我的MVC5应用程序中,可以使用

_Layout.cshtml 页面中获取用户名
@User.Identity.Name

我在表格 AspNetUsers 中添加了一个名为FullName的新字段,但我无法在_Layout.cshtml中显示它,它只显示名称!

enter image description here

如何在_Layout.cshtml中获取FullName的用户名?

3 个答案:

答案 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。我想你可以用反射。 你可以看看这个链接。

You can look this link