ASP.NET MVC显示用户全名

问题描述:

而不是使用用户名,我想显示来自我的ApplicationUser类中存在的DisplayName列的值。ASP.NET MVC显示用户全名

基于这里的solution,我创建了一个自定义类,并在Global.asax中应用程序启动初始化。

public class UserProfileActionFilter: ActionFilterAttribute 
{ 
    public override void OnResultExecuting(ResultExecutingContext filterContext) 
    { 
     ApplicationUser user = System.Web.HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.Current.User.Identity.GetUserId()); 
     if (user != null) 
     { 
      filterContext.Controller.ViewBag.DisplayName = user.DisplayName; 
     } 

    } 

} 

然后,我在LogOnPartialView中引用以下ViewBag.DisplayName。

但该类被通过了申请击中多次登录,操作执行过程中和等。我很担心这是否会导致开销到数据库。

我将创建一个IIdentity扩展方法:

public static class IIdentityExtensions 
{ 
    public static string GetUserDisplayName(this IIdentity identity) 
    { 
     ApplicationUser user = System.Web.HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.Current.User.Identity.GetUserId()); 
     if (user != null) 
     { 
      return user.DisplayName; 
     } 
     return string.Empty; 
    } 
} 

然后你应该能够使用它像这样:

<p>User Name: @User.Identity.GetUserDisplayName()</p> 

我没有测试它,但它应该指向你正确的方向。