0

我试图构建一个注册用户列表作为选择的下拉列表中的应用程序,将任务分配给人(最终与电子邮件集成)。我成功地使用了AspNetCore.Identity来创建注册用户。使用AspNetCore.Identity创建身份注册用户列表

这里是我到目前为止已经试过一个例子:

public class MinutaDbContext : IdentityDbContext<User> 
{ 
    public List<User> QueryUserNames() 
    { 
     var context = new MinutaDbContext(); 
     var allUsers = context.Users.ToList(); 
     return allUsers; 
    } 
} 

控制器:

public UserAssignmentController(UserManager<ApplicationUser> userManager, RoleManager<IdentityRole> roleManager) 
    { 
     UserManager = userManager; 
     RoleManager = roleManager; 
    } 

我已经看到了关于与AspNet.Identity解决方案的UserManager不起作用的答复因为它在AspNetCore中有不同的声明,并且我不确定如何满足上述所需的参数。

需要的LINQ还是可以提取从列表:

public UserManager(IUserStore<TUser> store, IOptions<IdentityOptions> optionsAccessor, IPasswordHasher<TUser> passwordHasher, IEnumerable<IUserValidator<TUser>> userValidators, IEnumerable<IPasswordValidator<TUser>> passwordValidators, ILookupNormalizer keyNormalizer, IdentityErrorDescriber errors, IServiceProvider services, ILogger<UserManager<TUser>> logger); 

或者我应该寻找其他地方,如IQueryableUserStore接口?

更新 我的DbContext构造函数已经用参数选项扩展了base。

public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddMvc(); 
     services.AddSingleton(Configuration); // Injections 
     services.AddSingleton<IGreeter, Greeter>(); 
     services.AddScoped<INoteData, SqlNoteData>(); 
     services.AddDbContext<MinutaDbContext>(options => 
       options.UseSqlServer(Configuration.GetConnectionString("Minuta"))); 
     services.AddIdentity<User, IdentityRole>() 
      .AddEntityFrameworkStores<MinutaDbContext>(); 
    } 

回答

0

这是更好地注入UserManager到控制器中,然后就可以用Users属性从数据库中获取所有用户:

public UserAssignmentController : Controller 
{ 
    private readonly UserManager<User> _userManager; 

    public UserAssignmentController(UserManager<User> userManager) 
    { 
     _userManager = userManager; 
    } 

    public async Task<IActionResult> Index() 
    { 
     var users = await _userManager.Users; 
     return View(users); 
    } 
} 
0

添加这个您MinutaDbContext类

公共MinutaDbContext(DbContextOptions选项)的构造函数:基地(选项) {

 } 

然后确保您配置startup.cs文件配置服务方法。 然后,如果您使用存储库模式,则需要为您的服务集合添加范围。如果你可以发布你的startup.cs文件。这将有所帮助。

+0

我已经将请求的startup.cs ConfigureServices方法添加为上面的编辑。范围也被添加到实施服务收集,但我不确定这将如何影响我获得注册用户列表的能力? – Remy

0

感谢您的所有捐款,我标志着帮助大多数的答案问题的解决方案。为了完整性,这里是我的解决方案的实现。根据需要创建了一个帮助程序类,返回一串用户名:

public List<string> UserList { 
      get { 
       var allUsers = userManager.Users; 
       return allUsers.Select(x => x.UserName).ToList(); 
      } 
     } 
相关问题