2011-01-24 95 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(); 
相关问题