2011-01-24 12 views

Respuesta

13

Roles.GetUsersInRole devuelve un string[] de nombres de usuario en un papel. Si realmente desea que los objetos MembershipUser, puede utilizar:

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

Por supuesto, esto es un rendimiento intensivo, ya que golpea la base de datos una vez para todos los usuarios.

Si está dispuesto a renunciar a la independencia del proveedor, puede consultar la base de datos subyacente directamente y realizar una combinación en el servidor de la base de datos para obtener todos los usuarios en un rol específico.

+0

missed en web.config – Dorathoto

0

Utilice la clase RoleProvider http://msdn.microsoft.com/en-us/library/system.web.security.roleprovider.aspx

que tiene un método FindUsersInRole

+0

Tenga en cuenta FindUsersInRole acepta dos parámetros de la segunda de las cuales es una cadena que cada nombre de usuario debe contener (es decir, COMO) para ser emparejado. Es un método estúpido que no se puede usar para encontrar _todos los usuarios en un rol cualquiera que sea su nombre de usuario. – dpant

+0

@dpant RoleProvider es una clase abstracta. El ejemplo en el enlace en mi respuesta es exactamente ese "un ejemplo": usted define cómo funciona el método y qué devuelve extendiendo la clase RoleProvider y los métodos abstractos por completo, de modo que si desea ignorar el segundo parámetro y solo pasar Null usted puede. Sugiero que se tome el tiempo para entender cómo funcionan estas cosas antes de publicar comentarios sin sentido. – Rob

1

Para la unión a un ListBox puede utilizar:

ListBox1.DataSource = System.Web.Security.Roles.GetUsersInRole("Role_Name"); 
ListBox1.DataBind(); 
Cuestiones relacionadas