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

问题描述 投票:0回答:1

我希望每当用户登录时,都能显示全名。目前,我需要一个我工作的自定义代码,因为我没有使用身份方法获取用户登录的用户名。

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

我已经使用了以下链接。https:/www.codeproject.comTips991663Displaying-User-Full-Name-instead-of-User-Email-in

https:/forums.asp.nett1848780.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> 
asp.net asp.net-mvc entity-framework entity-framework-6 linq-to-entities
1个回答
0
投票

更好的方法是至少实现某种ID系统来引用用户的内部,看起来是某种User类。

砖石 解释得很好,你会很容易很快遇到重复的名字和用户名。一个常见的处理方法是给用户附加一个ID。这样一来,你可以拥有多个相同的名字,因为你只是用一个ID来代替引用他们。

你的lambda表达式最终会变成这样。u => u.ID == passedInID

© www.soinside.com 2019 - 2024. All rights reserved.