【问题标题】:Get users with a certain role in Razor pages获取 Razor 页面中具有特定角色的用户
【发布时间】:2020-07-23 11:25:20
【问题描述】:

我正在开发一个可供具有两个角色的用户使用的网站:管理员和教授,现在教授可以教授一门课程,我已经设置了表之间的关系并且它工作正常,现在当添加一门课程,我需要有一个用户的下拉列表(具有教授的角色),所以我可以为添加的课程分配一个教授,那么我如何用具有教授角色的用户填写下拉列表? 这是我现在的代码:

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

【问题讨论】:

    标签: .net visual-studio asp.net-core asp.net-identity


    【解决方案1】:

    您可以在这里找到类似的问题: Get list of users with assigned roles in asp.net identity 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()}));
    

    【讨论】:

      【解决方案2】:

      您可以使用此代码:

        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>
      

      【讨论】:

        猜你喜欢
        • 2014-08-31
        • 1970-01-01
        • 2016-06-18
        • 2018-12-31
        • 1970-01-01
        • 1970-01-01
        • 2021-02-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多