我只需要一个“已批准”用户的列表,但不知道如何弄清楚。
lstUsersNotInRole.DataSource = Membership.GetAllUsers(); // Get Approved Users Only!?!
lstUsersNotInRole.DataBind();
任何帮助将不胜感激。
卡多
我只需要一个“已批准”用户的列表,但不知道如何弄清楚。
lstUsersNotInRole.DataSource = Membership.GetAllUsers(); // Get Approved Users Only!?!
lstUsersNotInRole.DataBind();
任何帮助将不胜感激。
卡多
无需深入研究数据库并更改/创建存储过程(并且由于您没有指定要使用的数据库),您可以使用 Linq 来做到这一点。尝试这个:
Membership.GetAllUsers().Cast<MembershipUser>().Where(u => u.IsApproved == true).ToList();
您需要在存储过程中过滤已批准的用户并将结果返回给您的应用程序。
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
如果您使用SqlMembershipProvider
,您可以手动选择它们,可以是普通的 sql 语句(例如 via 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
,复制粘贴相关部分并进行相应修改。