2011-01-24 93 views

回答

13

Roles.GetUsersInRole返回一個角色的用戶名的string[]。如果你真的想MembershipUser對象,你可以使用:

var list = Roles.GetUsersInRole("roleName").Select(Membership.GetUser).ToList() 

當然,這是性能密集型,因爲它擊中一次數據庫爲每一位用戶。

如果您願意放棄提供程序獨立性,則可以直接查詢底層數據庫並在數據庫服務器上執行連接以獲取特定角色的所有用戶。

0

使用RoleProvider類http://msdn.microsoft.com/en-us/library/system.web.security.roleprovider.aspx

它有一個FindUsersInRole方法

+0

請注意FindUsersInRole接受兩個參數,其中第二個是一個字符串,每個用戶名應包含(即LIKE )以便匹配。這是一種愚蠢的方法,無論用戶名是什麼,都不能用於查找角色中的所有用戶。 – dpant 2017-12-07 15:27:32

+0

@dpant RoleProvider是一個抽象類!我的答案中的鏈接示例正是「示例」 - 您通過擴展RoleProvider類和完全抽象方法來定義方法的工作原理和返回結果,因此如果您希望忽略第二個參數並傳入Null您可以。我建議你在發表毫無意義的評論之前花點時間瞭解這些事情是如何工作的。 – Rob 2017-12-07 23:54:20

1

對於綁定到ListBox你可以使用:

ListBox1.DataSource = System.Web.Security.Roles.GetUsersInRole("Role_Name"); 
ListBox1.DataBind(); 
相關問題