2015-05-04 19 views
6

Özel özellikleri olan ApplicationUser : IdentityUser numaralı MVC5 kullanıyorum. Şimdi farklı düzende (başlık, kenar çubuğu) görüntülenen kullanıcı görüntüsünü göstermek için layout.cshtml içinde bir özel özellik (Avatar) almak istiyorum. Bunu nasıl yaparım? Şu anda @User.Identity.Name kullanıyorum Geçerli ApplicationUser ürününü mizanpaj görünümüne getirin

public class ApplicationUser : IdentityUser 
{ 
    public string Avatar { get; set; } 
    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager) 
    { 
     var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); 
     return userIdentity; 
    } 

} 

benim görünümlerinde kullanıcı adı oyuna girişi için. Ben de kullanıcı imajını istiyorum.

Bunu nasıl alabilirim?

+0

gibi erişebilirsiniz IdentityClaim olarak avatar özelliğini ekleyebilir, ancak önce nesneyi yayınlayabileceğim @ (((AppliactionUser) User.Identity) .Avatar) Kullanıcı sınıfımın içinde bulunduğu bir base viewmodel oluşturarak bunu çözdüm. Yerleşimimde kullandığım birden çok özellik için temel sınıfı kullanıyorum. – Martin

+0

@Martin Çalışmıyor. Atar 'Nesnesi' System.Security.Claims.ClaimsIdentity 'istisnası – SMUsamaShah

+0

tipine dönüştürülemiyor. Sonra, her bir görünümünüzde kullandığınız bir temel viewmodel oluşturur. Bu, düzen sayfanızda ihtiyacınız olan tüm özelliklere erişmenizi sağlar. – Martin

cevap

7

Sen

public class ApplicationUser : IdentityUser 
{ 
    public string Avatar { get; set; } 
    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager) 
    { 
      var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); 
      userIdentity.AddClaim(new Claim("avatar", this.Avatar)); 
      return userIdentity; 
    } 
} 

jilet İç görünüm sen emin değilim bu

@{ 
    var avatar = ((ClaimsIdentity)User.Identity).FindFirst("avatar"); 
} 
+2

'avatar.Value' – SMUsamaShah

+1

değerini içerir. Bu, sorunu en basit şekilde çözdü – SMUsamaShah

İlgili konular