2011-01-24 43 views

Trả lời

13

Roles.GetUsersInRole trả về một string[] tên người dùng trong một vai trò. Nếu bạn thực sự muốn MembershipUser đối tượng, bạn có thể sử dụng:

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

Tất nhiên, đây là hiệu suất chuyên sâu như nó chạm vào cơ sở dữ liệu một lần cho mỗi người dùng.

Nếu bạn sẵn sàng từ bỏ sự độc lập của nhà cung cấp, bạn có thể truy vấn trực tiếp cơ sở dữ liệu bên dưới và thực hiện kết nối trên máy chủ cơ sở dữ liệu để nhận tất cả người dùng trong một vai trò cụ thể.

+0

bỏ lỡ trong web.config – Dorathoto

0

Sử dụng lớp RoleProvider http://msdn.microsoft.com/en-us/library/system.web.security.roleprovider.aspx

nó có một phương pháp FindUsersInRole

+0

Xin lưu ý FindUsersInRole chấp nhận hai tham số thứ hai trong số đó là một chuỗi mỗi tên người dùng nên chứa (tức là THÍCH) để được kết hợp. Nó là một phương thức ngu ngốc không thể được sử dụng để tìm người dùng _all_ trong một vai trò bất kể tên người dùng của họ. – dpant

+0

@dpant RoleProvider là một lớp trừu tượng! Ví dụ trên liên kết trong câu trả lời của tôi chính xác là "một ví dụ" - bạn xác định phương thức hoạt động như thế nào và nó trả về bằng cách mở rộng lớp RoleProvider và hoàn toàn các phương thức trừu tượng như vậy nếu bạn muốn bỏ qua tham số thứ hai và chỉ cần bỏ qua trong Null bạn có thể. Tôi đề nghị bạn dành thời gian để hiểu những điều này hoạt động như thế nào trước khi đăng các bình luận vô nghĩa. – Rob

1

Đối với ràng buộc vào một ListBox bạn có thể sử dụng:

ListBox1.DataSource = System.Web.Security.Roles.GetUsersInRole("Role_Name"); 
ListBox1.DataBind(); 
Các vấn đề liên quan