2013-03-11 2 views
1

Мне нужен только список «одобренных» пользователей, но не знаю, как это понять.ASP.NET C# (3.5) Членство, как получить только одобренных пользователей?

lstUsersNotInRole.DataSource = Membership.GetAllUsers(); // Get Approved Users Only!?! 
lstUsersNotInRole.DataBind(); 

Любая помощь была бы весьма признательна.

Кардо

ответ

5

Вместо того, чтобы вникать в базу данных и изменять/создавать хранимые процедуры (и поскольку вы не указали, какую базу данных вы используете), вы можете сделать это, используя Linq. Попробуйте следующее:

Membership.GetAllUsers().Cast<MembershipUser>().Where(u => u.IsApproved == true).ToList(); 
+0

Спасибо за ваш столь прекрасный и простой ответ :-) – Kardo

0

Вы должны фильтровать одобренные пользователи в хранимой процедуре и возвращают результат в приложение.

CREATE PROCEDURE dbo.Membership_GetActiveUsersInRoles 

    @RoleName nvarchar(256) 

AS 

    BEGIN 

     DECLARE @RoleId uniqueidentifier 

     SELECT @RoleId = RoleId 
     FROM dbo.aspnet_Roles 
     WHERE LOWER(@RoleName) = LoweredRoleName 

     SELECT u.UserName, u.UserId 
     FROM dbo.aspnet_Users u, dbo.aspnet_UsersInRoles ur, dbo.aspnet_Membership m 
     WHERE 
     u.UserId = m.UserId AND 
     u.UserId = ur.UserId AND 
     @RoleId = ur.RoleId and 
     m.IsApproved = 'true' 
     -- You can also specify m.IsLockedOut = 'false' for other purposes 

END 
0

Если вы используете SqlMembershipProvider, вы можете выбрать их вручную, либо как простой SQL-оператора (например, через ADO.NET) или путем создания пользовательской хранимой процедуры, которая также поддерживает пейджинг и ApplicationId и где вы можете параметризовать IsApproved.

SELECT m.IsApproved, u.UserName, 
     m.Email, m.PasswordQuestion, m.Comment, 
     m.CreateDate, m.LastLoginDate, u.LastActivityDate, 
     m.LastPasswordChangedDate, u.UserId, 
     m.IsLockedOut, m.LastLockoutDate 
FROM dbo.aspnet_Membership m, dbo.aspnet_Users u 
WHERE u.UserId = m.UserId 
AND m.IsApproved = @IsApproved 
ORDER BY u.UserName 

Просто взгляните на dbo.aspnet_Membership_GetAllUsers, копировать вставить соответствующие части и изменить его соответствующим образом.

Смежные вопросы