2014-09-20 77 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

相關問題