Asp.net-Mvc
在 MVC Asp.net 身份中具有角色的使用者列表
我想列出在我的網站上註冊的所有使用者及其角色的列表。
身份證 | 姓名 | 角色
1 | 美國廣播公司 | 行政
2 | 防禦工事 | 使用者
像這樣,我製作了角色控制器,其中列出了所有角色。
public ActionResult Index() { var roles = context.Roles.ToList(); return View(roles); }在視圖中
@model IEnumerable<Microsoft.AspNet.Identity.EntityFramework.IdentityRole> @{ ViewBag.Title = "Index"; } <div> @foreach (var role in Model) { <p> <strong>@role.Name | </strong> </p> } </div>這將列出所有角色,但我想要使用者列表及其角色。
請給出任何解決方案,謝謝
創建一個名為 UserViewModel 的新類。這將充當您頁面的視圖模型。
public class GroupedUserViewModel { public List<UserViewModel> Users {get; set;} public List<UserViewModel> Admins {get; set;} } public class UserViewModel { public string Username {get; set;} public string Roles {get; set;} }在控制器的操作方法中,獲取使用者列表及其角色並將其映射到 UserViewModel。
public ActionResult Index() { var allusers = context.Users.ToList(); var users = allusers.Where(x=>x.Roles.Select(role => role.Name).Contains("User")).ToList(); var userVM = users.Select(user=>new UserViewModel{Username = user.FullName, Roles = string.Join(",", user.Roles.Select(role=>role.Name))}).ToList(); var admins = allusers.Where(x=>x.Roles.Select(role => role.Name).Contains("Admin")).ToList(); var adminsVM = admins.Select(user=>new UserViewModel{Username = user.FullName, Roles = string.Join(",", user.Roles.Select(role=>role.Name))}).ToList(); var model = new GroupedUserViewModel{Users = userVM, Admins = adminsVM}; return View(model); }然後在視圖中使用新模型。確保在您定義視圖模型的地方使用正確的命名空間。
@model Models.GroupedUserViewModel @{ ViewBag.Title = "Index"; } <div> @foreach (var user in Model.Admins) { <p> <strong>@user.Username | @user.Roles </strong> </p> } @foreach (var user in Model.Users) { <p> <strong>@user.Username | @user.Roles </strong> </p> } </div>