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(); 
      } 
     } 
相關問題