在 MVC5 razor 中为每个用户加载角色列表
Load list of roles for each user in MVC5 razor
我试图显示一行每个用户及其在 ASP.net MVC 应用程序中的角色。
用户及其角色存储在 ASP.net 会员提供程序 table 中。
使用下面的代码我可以显示每个用户和他们分配的角色,但我的问题是如果用户处于多个角色然后用户会重复。
我尝试将 UserRole 设置为列表,但我现在卡住了,因为我不知道如何在下面的代码中将角色添加到列表中。你能给我一些指导吗?
我的视图模型是:
public class UserViewModel
{
public string UserName { get; set; }
public List<String> UserRole { get; set; }
}
var roles = ApplicationRoles.RolesList;
var users = new List<UserViewModel>();
foreach (var role in roles)
{
foreach (var user in Roles.GetUsersInRole(role))
{
users.Add(new UserViewModel {UserName = user, UserRole = role });
}
}
return View(users);
如果用户有多个角色附加到 him/her,我如何加载角色以便不重复用户名?
我想按以下格式显示:
=======================
用户 |角色
约翰 |管理员,审批人
萨姆 |批准人
=======================
反过来做:不要获取具有特定角色的用户,获取用户列表并循环遍历,使用 Roles.GetRolesForUser
方法获取他们的行列表。
var userList = Membership.GetAllUsers();
foreach(MembershipUser user in userList)
{
string[] rolesArray = Roles.GetRolesForUser(user.UserName);
users.Add(new UserViewModel {UserName = user.UserName, UserRole = string.Join(",", rolesArray) });
}
你为什么不这样做
foreach (var user in Roles.GetUsersInRole(role))
{
users.Add(new UserViewModel {UserName = user, NameAndRole = user + "|"+ String.Join(",", UserRole.ToArray() });
}
或者您可以在视图模型中添加 属性 class 并使用它
Public String NameAndRole
{
get
{ return name + " | "+ String.Join(",", UserRole.ToArray()) }
}
MSDN:String.Join
我试图显示一行每个用户及其在 ASP.net MVC 应用程序中的角色。
用户及其角色存储在 ASP.net 会员提供程序 table 中。 使用下面的代码我可以显示每个用户和他们分配的角色,但我的问题是如果用户处于多个角色然后用户会重复。
我尝试将 UserRole 设置为列表,但我现在卡住了,因为我不知道如何在下面的代码中将角色添加到列表中。你能给我一些指导吗?
我的视图模型是:
public class UserViewModel
{
public string UserName { get; set; }
public List<String> UserRole { get; set; }
}
var roles = ApplicationRoles.RolesList;
var users = new List<UserViewModel>();
foreach (var role in roles)
{
foreach (var user in Roles.GetUsersInRole(role))
{
users.Add(new UserViewModel {UserName = user, UserRole = role });
}
}
return View(users);
如果用户有多个角色附加到 him/her,我如何加载角色以便不重复用户名?
我想按以下格式显示:
=======================
用户 |角色
约翰 |管理员,审批人
萨姆 |批准人
=======================
反过来做:不要获取具有特定角色的用户,获取用户列表并循环遍历,使用 Roles.GetRolesForUser
方法获取他们的行列表。
var userList = Membership.GetAllUsers();
foreach(MembershipUser user in userList)
{
string[] rolesArray = Roles.GetRolesForUser(user.UserName);
users.Add(new UserViewModel {UserName = user.UserName, UserRole = string.Join(",", rolesArray) });
}
你为什么不这样做
foreach (var user in Roles.GetUsersInRole(role))
{
users.Add(new UserViewModel {UserName = user, NameAndRole = user + "|"+ String.Join(",", UserRole.ToArray() });
}
或者您可以在视图模型中添加 属性 class 并使用它
Public String NameAndRole
{
get
{ return name + " | "+ String.Join(",", UserRole.ToArray()) }
}
MSDN:String.Join