2014-09-20 56 views
0

如何在ASP.NET身份2.0中显示用户及其角色的列表。在asp.net身份2.0中列出用户和角色

例...

李四 - 管理 鲍勃·史密斯 - 用户

到目前为止,我已经创建了一个UserRoleViewModel

public string fname { get; set; } 
public string rname { get; set; } 

在控制器中,我做了以下.. 。

ApplicationDbContext db = new ApplicationDbContext(); 

UserRoleViewModel obj = new UserRoleViewModel(); 

var result = from u in db.Users 
      select new UserRoleViewModel 
      { 
       fname = u.FirstName, 
       rname = ??? 
      }; 

return View(result); 

这是正确的方法吗?如果是的话,我如何在rname中获得用户的角色?

+0

您可以使用https://github.com/thinktecture/Thinktecture.IdentityManager创建它来管理asp.net身份框架用户,角色和其他操作。 – DSR 2014-09-20 22:52:36

回答

0

终于得到了我的问题的解决方案......

这是我创建的视图模型...

public class UserRoleViewModel 
{ 
    public string fname { get; set; } 
    public string rname { get; set; } 
} 

这是控制器...

public ActionResult Users() 
{ 
    var result = from user in db.Users 
       from role in db.Roles 
       where role.Users.Any(r => r.UserId == user.Id) 
       select new UserRoleViewModel 
       { 
        fname = user.FirstName, 
        rname = role.Name 
       }; 

     return View(result); 
} 

和thi s是视图...

@model IEnumerable<ApplicationName.Models.UserRoleViewModel> 
<ul> 
    @foreach(var u in Model) 
    { 
     <li>@u.fname - @u.rname</li> 
    } 
</ul> 

我还是一般的LINQ,Lambda和MVC的新手。如果有人有办法改善此代码,请随时添加您的观点。

+0

这不适用于每种情况。我有不止一个角色的用户,例如:员工,人力资源,薪资。这个解决方案将这些角色的用户吐出3次。最近我找到了这样的:'var users = allUsers.Select(u => new UserViewModel {Id = u.Id,UserName = u.UserName,Email = u.Email,Roles = String.Join(“,” ,u.Roles.Select(r => r.RoleId))})。ToList();'但是我怎样才能继续这个lambda(或转换为LINQ)来获取角色名称。 – RoLYroLLs 2015-12-02 15:01:29

0

请问@Model.Roles在强烈的打击下对@model WebApplicationName.Models.ApplicationUser不适合你吗?

控制器:

public ActionResult NameOfTheView(){return View(db.Users.ToList());} 
+0

但是,如何让我显示所有用户的名称和角色名称?即使User.IsInRole也只允许检查登录用户的角色。 – 2014-09-20 14:48:24

+0

@Yoda,是的,单靠这个不起作用是因为Users.Roles没有角色的名字。 – RoLYroLLs 2015-12-02 14:56:27

相关问题