2015-11-15 85 views
0

我對MVC5非常陌生,正在嘗試顯示用戶詳細信息的列表視圖以及他們所在角色的名稱。我使用MVC標識設置了角色。列表視圖顯示角色和應用程序用戶

下面是我的ViewModel

public class UserRoleViewModel 
{ 

    public string UserRoleVMId { get; set; } 

    public string Title { get; set; } 

    public string FirstName { get; set; } 

    public string Surname { get; set; } 

    public string Email { get; set; } 

    public string Role { get; set; } 

    public bool AccountEnabled { get; set; } 


} 

而且我的控制器:

public ActionResult Index() 
    { 
     var model = (from d in db.Users 
        select new UserRoleViewModel() 
        { 
         UserRoleVMId = d.Id, 
         Title = d.Title, 
         FirstName = d.FirstName, 
         Surname = d.Surname, 
         Email = d.Email, 
         AccountEnabled = d.AccountEnabled, 
         Role = d.Role.Name 
        }).ToList(); 

     return View(model); 
    } 

我不確定如何顯示角色名稱和正在錯誤消息

does not contain the definition for Role and no extension method Role 

Role = d.Role.Name 

任何幫助,將不勝感激

感謝

+2

你必須加入角色表用戶表來獲得角色的名字。 – Azim

回答

0

您可以使用此代碼

return view(db.Users.ToList()); 

,並在頂部使用您的視圖

@model IEnumerable<YourProjectName.Models.Users> 

,並使用此的foreach爲顯示內容

012當你想顯示一個用戶的詳細信息

viewModel.RolesForThisUser = UserManager.GetRoles(userId).ToList(); 

這是有用的:

+0

也不會推薦這個......他只需要使用一個連接。 – Seabizkit

0

可以使用GetRoles方法。

你應該使用屬性的角色,因爲用戶可以擁有多個角色:

public ActionResult Index() 
    { 
     using(var context = new IdentityDbContext()){ 

    viewModel = 
     context.Users 
     .Include("Roles") 
     .Select(u => 
      new UserRoleViewModel { 
       UserRoleVMId = u.Id, 
       Title = u.Title, 
       FirstName = u.FirstName, 
       Surname = u.Surname, 
       Email = u.Email, 
       AccountEnabled = u.AccountEnabled, 
       Role = u.Roles.First().Role.ToString() 
      } 
     ).ToList(); 
    } 

     return View(viewModel); 
    } 
+0

我不會推薦這個!他只需要使用加入。 – Seabizkit

+0

@ Seabizkit,你能解釋一下爲什麼你不這樣做? –

+0

他正在循環....這樣做,將是非常昂貴的......當他可以只是加入他所擁有的代碼時......無論如何,技術上這是更正確的方式..... – Seabizkit

相關問題