C# 加载MVC5中每个用户的角色列表

C# 加载MVC5中每个用户的角色列表,c#,razor,sqlmembershipprovider,asp-net-mvc-1,C#,Razor,Sqlmembershipprovider,Asp Net Mvc 1,我试图在ASP.net MVC应用程序中显示每个用户及其角色的一行 用户及其角色存储在ASP.net成员资格提供程序表中。 使用下面的代码,我可以显示每个用户及其分配的角色,但我的问题是,如果该用户处于多个角色中,那么该用户就会重复 我尝试将UserRole设置为列表,但现在我被卡住了,因为我不知道如何在下面的代码中将角色添加到列表中。你能告诉我一些方向吗 我的viewmodel是: public class UserViewModel { public string UserName {

我试图在ASP.net MVC应用程序中显示每个用户及其角色的一行

用户及其角色存储在ASP.net成员资格提供程序表中。 使用下面的代码,我可以显示每个用户及其分配的角色,但我的问题是,如果该用户处于多个角色中,那么该用户就会重复

我尝试将UserRole设置为列表,但现在我被卡住了,因为我不知道如何在下面的代码中将角色添加到列表中。你能告诉我一些方向吗

我的viewmodel是:

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);
public类UserViewModel
{
公共字符串用户名{get;set;}
公共列表用户角色{get;set;}
}
var roles=ApplicationRoles.RolesList;
var users=新列表();
foreach(角色中的var角色)
{
foreach(角色中的var用户。GetUsersInRole(角色))
{
添加(新的UserViewModel{UserName=user,UserRole=role});
}
}
返回视图(用户);
如果用户具有多个附加角色,如何加载角色以避免重复用户名

我想以以下格式显示它:

=======================

用户角色

John |管理员、批准人

Sam |批准人


=========================

反过来做:不要获取具有特定角色的用户,获取用户列表并循环执行,使用
角色.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() });
  }
也可以在viewmodel类中添加属性并使用它

Public String NameAndRole
{
  get
   { return name + " | "+ String.Join(",", UserRole.ToArray()) }
}

MSDN:

谢谢@Pranay,但是如果我有一个拥有多个角色的用户,会发生什么呢?这仍然会重复用户,我只想显示一次。@snowflakes74-为此,我只使用string.join,在有多个角色时,它将加入并显示奇妙的!!我现在就试试。谢谢@user1666620,我会试试你的逻辑,我的电脑现在正在重新启动。我更喜欢这种方式,但是角色总是空着回来。如何解决这个问题?顺便说一句:我必须在
web.config
中启用
rolemager
,你想怎么做?我使用了选定的答案,但我的角色为空,我知道我有具有角色的用户。