我想拥有在我的网站上注册的所有用户及其角色的列表。
ID | 姓名| 角色
1 | ABC | 行政
2 | DEF | 用户
像这样,我已经创建了Roles控制器,其中列出了所有角色。
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>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句