2014-09-03 11 views
9

Ho aggiunto il nome e il cognome alla classe ApplicationUser.MVC User.Identity.Name con nome e cognome

public class ApplicationUser : IdentityUser 
    { 
     public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager) 
     { 
      // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType 
      var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); 
      // Add custom user claims here 
      return userIdentity; 
     } 

     public string FirstName { get; set; } 
     public string LastName { get; set; } 
    } 

anche aggiunto informazioni al RegisterViewModel

La mia applicazione ha creato con successo, prima e LastName al tavolo, ma non sono in grado di ottenere i nomi e cognomi, come per la visualizzazione in _LoginPartial "User.Identity.Name"

risposta

10

nel vostro PartialView _LoginPartial.cshtml

Aggiungere il codice:

@if (Request.IsAuthenticated) 
{ 
    var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())); 
    var user = manager.FindById(User.Identity.GetUserId()); 
... 
} 

ApplicationDbContext = tuo DbContext -> default: ApplicationDbContext

Con l'istanza di ApplicationUser (user) è possibile ottenere First- e LastName -property

Sostituire User.Identity.Name con user.FirstName + " " + user.LastName come questo:

<ul class="nav navbar-nav navbar-right"> 
    <li> 
     @Html.ActionLink("Hello " + user.FirstName + " " + user.LastName + "!", "Manage", "Account", routeValues: null, htmlAttributes: new { title = "Manage" }) 
    </li> 
    <li><a href="javascript:document.getElementById('logoutForm').submit()">Log off</a></li> 
</ul> 
+0

no !, non mi dà "GetName" – Emil

+0

sono Firstname e Lastname nella tabella corretta? –

+0

sì, ma "User.Identity" non sembra avere le informazioni – Emil

3

You' È necessario aggiungere nomi come reclamo all'utente quando l'utente ha effettuato l'accesso. Quindi nelle tue visualizzazioni accedi a queste affermazioni da ClaimsPrincipal.Current.Claims. Dai uno sguardo allo my answer here che praticamente fa lo stesso, solo tu devi aggiungere nomi invece di temi.

Problemi correlati