2013-05-08 63 views
0

我有一个带有成员部分的网站。还有一个管理员来管理用户。我想要的是管理员可以看到其他用户的信息,如用户名和电子邮件。如何使用MVC4访问会员用户的信息

现在,注册页面向用户询问this tutorial后的用户名,密码和电子邮件。它记住DB中的那些,只是在UserProfile表中找到。我的问题是访问它们。我知道如何用MVC3与Membership.GetAllUsers().Cast<MembershipUser>()以及where来指定请求。

但是,在MVC4中,Membership.GetAllUsers()是不允许的,据我所知。我尝试了很多不同的方式在网上找到,但没有解决我的问题。我发现最好的是只得到了用户名,发现in this post

var model = Roles.GetUsersInRole("StatusWaiting").Select(Membership.GetUser).ToList();

其中"statusWaiting"是我在DB查找用户的角色。但是,对于这个(和其他一些结果相同的),我有模型中出现的EmailID,但它总是空的。

有人知道如何做到这一点吗?我仍在寻找它,但我还没有找到任何东西。

编辑:如果有另一种方式来实现这一目标,我的思想开阔

EDIT2:通过上面的线,我得到用的MembershipUser像场:评论,CreationDate,电子邮件,IsApproved,...,的ProviderName ,...,用户名。因此,我表示认为我在注册时将电子邮件发送到的表格与我试图获取信息的表格不同。但我不弄清楚它可能是

+0

你在哪里存储用户数据? – lopezbertoni 2013-05-08 20:49:00

+0

我将它们存储在DefaultConnection的数据库的UserProfile中connectionString – castors33 2013-05-09 12:13:12

+0

然后您可以在数据库中查询该表。 – lopezbertoni 2013-05-09 14:05:54

回答

1

其别人如果角色是“statusWaiting”,那么你可以用得到的角色:

var model = Roles.GetUsersInRole("statusWaiting"); //Note the case 

如果DB正确填充,那么误差您的查询。

编辑:

从默认的角色提供的方法签名是:

public string[] GetUsersInRole(string roleName) 

这就是你只有在查询用户名的原因。如果您需要更多数据,则直接查询您的数据库,而不使用角色提供程序。像下面的代码应该有所帮助。

var query = db.UserTableName.Where(x => x.Role == "statusWaiting"); 
+0

我想这是肯定的。但是,对于这一行,我只得到userName – castors33 2013-05-09 14:43:36

+0

的字符串[],这正是我的问题,我不知道如何直接访问UserProfile表,因为它是一个可视化自动生成的表。我试图寻找一个解决方案,但我还没有找到任何东西 – castors33 2013-05-09 15:54:41

+0

看看这个:http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers- universal-providers-and-the-new-asp-net-4-5-web-forms-and-asp-net-mvc-4-templates.aspx – lopezbertoni 2013-05-09 19:22:22

相关问题