ASP.NET MVC显示用户全名



而不是使用用户名,我想从我的applicationuser类中显示的列显示名称。

基于这里的解决方案,我创建了一个自定义类,并在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;
        }
    }
}

i然后在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>

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

相关内容

  • 没有找到相关文章