3

使用ASP.NET MVC5用戶身份,我試圖在視圖中顯示IdentityUser的角色名稱。如何在View中獲取IdentityUser角色的名字?

看起來Identity用戶具有Roles屬性,它代表IdentityUserRole的集合,而不是IdentityRole。所不同的是IdentityUserRoleIdentityUser表示和IdentityRole之間的關聯,而IdentityRole是實際Role模型[+]。顯然在IdentityUser和IdentityRole之間沒有定義導航。所以我們得到的是IdentityUserRole的RoleId。

  1. 有沒有簡單的方法來獲取角色名稱?
  2. 使用Fluent API,我們可以在整個項目中定義IdentityRoleIdentityUserRole之間的虛擬導航屬性,以便輕鬆獲取名稱 ?
  3. 如果是設計,不讓我們直接獲得IdentityRole的好處是什麼?
+0

我建議你得到角色選擇身份UserRole的在控制器/操作中,並將其作爲屬性傳遞給視圖,這意味着您要傳遞的模型的一部分。如果不是,你可能需要擴展IPrincipal或IIdentity屬性來包含角色,那麼你可以得到它像HttpContext.Current.User.Identity.Roles。 – DSR 2014-11-24 10:37:11

+1

我假設你現在已經找到了答案,即使這裏沒有任何東西,所以我想知道它是什麼。此時,我在ViewBag中存儲IdentityRole對象的字典表示形式,並通過視圖代碼中的IdentityUserRole.RoleId訪問它們。它的工作原理,但我並不感到激動。 – 2015-04-08 02:01:27

回答

-1

可以使用來自用戶的rolemanager

var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(this.dbcontext)); 

得到的UserRole,然後從角色中選擇名稱

roleManager.FindById(user.RoleId).Name 
相關問題