我有一个有会员部分的网站。还有一个管理员来管理用户。我想要的是管理员看到其他用户的信息,如用户名和电子邮件。
目前,注册页面会向用户询问this tutorial后的用户名,密码和电子邮件。它会在UserProfile
表中记住数据库中的那些。我的问题是访问它们。我知道如何使用Membership.GetAllUsers().Cast<MembershipUser>()
和where
来使用MVC3来指定请求。
但是,在MVC4中,我不了解Membership.GetAllUsers()
。我在网上尝试了很多不同的方法,但都没有解决我的问题。我找到的最好的方法是只获取userName,找到in this post:
var model = Roles.GetUsersInRole("StatusWaiting").Select(Membership.GetUser).ToList();
"statusWaiting"
是我在数据库中查找的用户的角色。但是,有了这个(以及其他一些结果相同的),我有模型中出现的EmailID,但它总是空的。
有人知道如何实现这一目标吗?我还在寻找它,但我还没有找到任何东西。
编辑:如果还有其他方法可以实现这一目标,那我就开心了
EDIT2:通过上面这一行,我获得了MemberShipUser,其中的字段包括:Comment,CreationDate,Email,IsApproved,...,ProviderName,...,UserName。所以我盯着我认为我在注册时放电子邮件的表与我试图获取信息的表不一样。但我不知道它可能是哪一个
答案 0 :(得分:1)
如果角色是“statusWaiting”,那么您可以使用以下方式获取角色:
var model = Roles.GetUsersInRole("statusWaiting"); //Note the case
如果正确填充了数据库,那么错误就是您的查询。
编辑:
默认角色提供程序的方法签名是:
public string[] GetUsersInRole(string roleName)
这就是您只在查询中获取用户名的原因。如果您需要更多数据,请直接查询您的数据库,而无需使用角色提供程序。下面的一些代码应该有所帮助。
var query = db.UserTableName.Where(x => x.Role == "statusWaiting");