Получить пользователей с определенной ролью на страницах Razor - PullRequest
0 голосов
/ 10 апреля 2020

Я занимаюсь разработкой веб-сайта, который может использоваться пользователями с двумя ролями: администратором и профессором, теперь профессор может преподавать курс, я уже установил отношения между таблицами, и теперь он отлично работает, когда добавляя курс, мне нужно иметь список пользователей (с ролью профессора), чтобы я мог назначить профессора для добавленного курса, так как я могу заполнить раскрывающийся список пользователями, которые имеют роль профессора? Вот мой код сейчас:

 public class CreateModel : PageModel
    {
        private readonly DotNetProject.Data.ApplicationDbContext _context;
        private readonly UserManager<IdentityUser> _userManager;

        public CreateModel(DotNetProject.Data.ApplicationDbContext context, UserManager<IdentityUser> userManager)
        {
            _context = context;
            _userManager = userManager;
        }

        public IActionResult OnGet()
        {
        ViewData["BranchIdBranch"] = new SelectList(_context.Branch, "IdBranch", "IdBranch");
        ViewData["UserId"] = new SelectList(_context.AppUser, "Id", "Id");
            return Page();
        }

        [BindProperty]
        public Course Course { get; set; }


        public async Task<IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return Page();
            }

            _context.Course.Add(Course);
            await _context.SaveChangesAsync();

            return RedirectToPage("./Index");
        }
    }

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

Вы можете использовать этот код:

  public void OnGet()
        {
            ViewData["ProfessorData"] =  _context.Users.Where(x => x.Roles.Select(p => p.Id).Contains(roleId)).Select(n => new SelectListItem
            {
               Value = n.Id.ToString(),
               Text = n.UserName.ToString()
            }).ToList(); 
        }

Просмотр:

   <select asp-items="@((List<SelectListItem>)ViewData["ProfessorData"])">
        <option value="">---Choose One---</option>
    </select>
0 голосов
/ 11 апреля 2020

Подобный вопрос можно найти здесь: Получить список пользователей с назначенными ролями в asp. net удостоверение 2,0

Вы можете передать значение на страницу бритвы с помощью ViewBag :

ViewBag.CustomerId = new SelectList(db.Users.Where(x=> x.Roles.Where(p=>roles.Contains(p.RoleId))).Select(user=> new SelectListItem{Text=user.UserName,Value=user.UserID.ToString()}));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...