2017-03-03 79 views
0

感觉有点卡住:我能特性正是如此添加到ApplicationUser:如何访问扩展属性的认同DOTNET核心

public class ApplicationUser : IdentityUser 
    { 
     [DataType(DataType.Text)] 
     public string CustomUserName { get; set; } 
     [DataType(DataType.Text)]  
     public string Address { get; set; } 
     [DataType(DataType.Text)] 
     public string City { get; set; } 
     [DataType(DataType.PostalCode)] 
     public string ZipCode { get; set; } 
    } 

而且他们在我Register.cshtml视图展现出来,并且被添加到数据库很好通过Register方法。到目前为止,我正在使用由dotnet核心提供的默认设置,以及Identity。

问题是如何访问他们,一旦他们在那里。 UserManager有一些默认方法,如GetEmailAsync,但是获取我的其他新增属性的过程是什么?

我想过使用扩展方法,但当我深入了解原始源代码(尝试模仿GetEmailAsync所做的)时,我承认在the source中有点迷路,而且我不确定是否应该无论如何,都要这样做。

我也环顾四周,似乎没有什么可以做这部分。有些示例说明如何将这些属性添加到注册中,但是没有人会说如何在它们位于该处时检索它们。

那么,最好的方式来获得我最近铸造的属性?

+0

看到下面的答案。 –

回答

0

UserManager<TUser>类是一个泛型类。正如你所看到的,你将需要一个UserManager<ApplicationUser>的实例。

UserManager<TUser>类将公开方法Task<TUser> FindByIdAsync(string userId),在您的情况下将返回ApplicationUser的实例。

所以你所需要做的就是致电ApplicationUser myUser = myUserManager.FindByIdAsync("myUserId");