C# ASP.NET MVC显示用户全名

C# ASP.NET MVC显示用户全名,c#,asp.net-mvc,asp.net-identity,C#,Asp.net Mvc,Asp.net Identity,我希望显示ApplicationUser类中存在的DisplayName列中的值,而不是使用用户名 基于here,我创建了一个自定义类,并在Global.asax应用程序启动中对其进行初始化 public class UserProfileActionFilter: ActionFilterAttribute { public override void OnResultExecuting(ResultExecutingContext filterContext) {

我希望显示ApplicationUser类中存在的DisplayName列中的值,而不是使用用户名

基于here,我创建了一个自定义类,并在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;
        }

    }

}
公共类UserProfileActionFilter:ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
ApplicationUser user=System.Web.HttpContext.Current.GetOwinContext().GetUserManager().FindById(System.Web.HttpContext.Current.user.Identity.GetUserId());
如果(用户!=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;
    }
}
公共静态类IIdentityExtensions
{   
公共静态字符串GetUserDisplayName(此IIIdentity标识)
{
ApplicationUser user=System.Web.HttpContext.Current.GetOwinContext().GetUserManager().FindById(System.Web.HttpContext.Current.user.Identity.GetUserId());
如果(用户!=null)
{
返回user.DisplayName;
}
返回字符串。空;
}
}
然后你应该可以这样使用它:

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

我还没有测试过它,但它应该为您指出正确的方向