我正在开发一个网站,供两个角色的用户使用:管理员和教授,现在教授可以教授课程,我已经建立了表之间的关系,并且现在可以正常工作添加课程时,我需要有一个下拉列表的用户列表(具有Professor角色),以便我可以为所添加的课程分配教授,因此,如何为具有Professor角色的用户填充下拉列表? 这是我现在的代码:
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");
}
}
答案 0 :(得分:0)
您可以在这里找到类似的问题: 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()}));
答案 1 :(得分:0)
您可以使用以下代码:
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>