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; 
    } 

ответы, которые я видел о UserManager с решениями AspNet.Identity не работают потому что он имеет другое объявление в 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 уже расширяет базу с параметром аргумента.

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 для configureservices. Затем, если вы используете шаблон репозитория, вам нужно добавить область для своей коллекции услуг. если вы можете опубликовать то, что у вас есть в файле startup.cs. Это поможет.

+0

Я добавил запрошенный метод startup.cs ConfigureServices в качестве редактирования выше. Сфера применения также добавлена ​​для реализации набора услуг, но я не уверен, как это повлияет на мою способность получить список зарегистрированных пользователей? – Remy

0

Спасибо за все вклады, я пометил ответ, который помог больше всего как решение проблемы. Для полноты здесь была моя реализация решения. Был создан хелпер-класс, возвращающий строку имен пользователей:

public List<string> UserList { 
      get { 
       var allUsers = userManager.Users; 
       return allUsers.Select(x => x.UserName).ToList(); 
      } 
     } 
Смежные вопросы