我试图在ASP.net MVC应用程序中显示每个用户及其角色的一行。
用户及其角色存储在ASP.net成员资格提供程序表中。 使用下面的代码我可以显示每个用户及其分配的角色,但我的问题是如果用户处于多个角色,那么用户会重复。
我尝试将UserRole设为List但我现在卡住了,因为我不知道如何将角色添加到下面代码中的列表中。你能帮我指点一下吗?
我的观点模型是:
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);
如何加载角色,如果用户有多个角色附加到我/她,我不会重复用户名?
我想以下列格式显示它:
=======================
用户|作用
约翰|管理员,审批人
Sam |审批
=======================
答案 0 :(得分:1)
反之亦然:不要让用户具有某个角色,获取用户列表并循环使用,使用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) });
}
答案 1 :(得分:1)
为什么你不喜欢这个
foreach (var user in Roles.GetUsersInRole(role))
{
users.Add(new UserViewModel {UserName = user, NameAndRole = user + "|"+ String.Join(",", UserRole.ToArray() });
}
或者您可以在viewmodel类中添加属性并使用它
Public String NameAndRole
{
get
{ return name + " | "+ String.Join(",", UserRole.ToArray()) }
}
MSDN:String.Join