1

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);

ユーザーに複数のロールが関連付けられている場合、ユーザー名を繰り返さないようにロールをロードするにはどうすればよいですか?

次の形式で表示したいと思います。

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

ユーザー | 役割

ジョン | ジョン | 管理者、承認者

サム | 承認者

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

4

2 に答える 2

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) });
}
于 2015-07-06T12:00:10.843 に答える
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 :文字列.結合

于 2015-07-06T12:00:47.650 に答える