在 AspNet MVC 中显示用户全名而不是用户电子邮件

Displaying User Full Name instead of User Email in AspNet MVC

我想在用户登录时显示全名。目前,我需要使用自定义代码,因为我没有使用让用户登录用户名的身份方法。

每当我尝试使用提供的链接时,它要么 returns 一个空错误,要么在登录后什么都不显示。

我使用了以下链接: https://www.codeproject.com/Tips/991663/Displaying-User-Full-Name-instead-of-User-Email-in

https://forums.asp.net/t/1848780.aspx?How+to+replace+User+Identity+Name+by+FirstName+Last+Name+at+login+time

public class ApplicationBaseController : Controller
{
    protected override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        if (User != null)
        {
            var context = new mymodel();
            var username = User.Identity.Name;

            if (!string.IsNullOrEmpty(username))
            {
                var user = context.Users.SingleOrDefault(u => u.FirstName == username);
                string fullName = string.Concat(new string[] { user.FirstName, " ", user.LastName });
                ViewData.Add("FullName", fullName);
            }
        }
        base.OnActionExecuted(filterContext);
    }
    public ApplicationBaseController()
    { }
}


  <authentication mode="Forms">
      <forms cookieless="UseCookies" loginUrl="~/Account/Sigin" slidingExpiration="true"></forms>
  </authentication> 

更好的方法是至少实施某种 ID 系统来引用看起来像是某种用户 class.

中的用户

mason 解释得很好,您很快就会很容易地 运行 重复名称和用户名。处理此问题的一种常见方法是将 ID 附加到用户。这样你就可以拥有多个相同的名字,因为你只是用一个 ID 来引用它们。

你的 lambda 表达式最终看起来像这样: u => u.ID == passedInID