2017-03-02 7 views
0

Anstatt Benutzername zu verwenden, möchte ich den Wert aus Spalte DisplayName anzeigen, die in meiner ApplicationUser-Klasse vorhanden ist.ASP.NET MVC Anzeige Vollständiger Name des Benutzers

Basierend auf der solution hier, ich habe eine benutzerdefinierte Klasse erstellt und initialisieren sie in Global.asax Application Start.

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; 
     } 

    } 

} 

Ich verweisen dann folgende ViewBag.DisplayName in der LogOnPartialView.

Aber diese Klasse wird mehrmals während der Anwendung, während der Anmeldung, der Ausführung von Aktionen und so weiter getroffen. Ich mache mir Sorgen, ob dies einen Overhead für die Datenbank verursacht.

Antwort

1

würde ich eine IIdentity Extension-Methode zu erstellen:

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; 
    } 
} 

Und dann sollten Sie in der Lage sein, es wie folgt zu verwenden:

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

Ich habe es nicht getestet, aber es sollte Ihnen zeigen in die richtige Richtung.

Verwandte Themen