MVC3管理特定角色的所有用户和其他信息

时间:2012-09-07 16:49:43

标签: asp.net-mvc-3 asp.net-membership asp.net-roles

我正在构建项目的管理员方面,我将不得不: - 创建新用户并添加一些更具体的信息(即位置,位置等) - 必须将不同的用户分配到不同的角色,

我首先要做的是将现有用户内部的信息与附加表中的信息一起加入数据并按不同角色过滤

public class UserDetail
{
    [HiddenInput(DisplayValue = false)]
    public string UserId { get; set; }

    public int StoreID { get; set; }

    public string PositionID { get; set; }
}

在控制器中,我想首先做一个简单的事情,将内容连接来自Membership类和内部连接的数据与UserID级别的上述UserDetail类。所以我使用了以下代码

    public ActionResult Index()
    {
        var allSystemUsers = Membership.GetAllUsers().Cast<MembershipUser>()
            .Select(user => new {user.UserName, user.Email, user.CreationDate, user.LastLoginDate });

                    return View();
    }

问题在于我不知道如何首先将某些角色中的人拉到所有角色,然后如何使用上述UserDetail类进行内部联接。

一旦我有Index ActionaResult,我希望我能够创建 - 创建和编辑功能

2 个答案:

答案 0 :(得分:0)

您不必仅使用.Select,因为您也可以使用.Skip.Take。您还可以使用.OrderBy设置可重复的订单,还可以使用.Where过滤掉您不想包含的用户。

如果你想自己动手。

现在,如果你真的想要自己推出,它可能并不完全是你想要的,但是Troy Goode已经为会员制作了一个最优秀的,基于地区的方法。您可以将它从GitHub中分离出来并根据需要将其更改为使用配置文件(或通过EF Code First将其他信息绑定到用户,我已经完成了。)

https://github.com/TroyGoode/MembershipStarterKit

这是一个很好的起点,可以为您提供大部分用户管理服务。当它被放入某个区域时,它对您网站的其余部分影响很小。

答案 1 :(得分:0)

要让用户担任特定角色,请使用角色提供程序:

List<string> users = Roles.GetUsersInRole("someRole");

这将返回分配给指定角色的所有用户的用户名列表。 然后,您可以遍历users列表并获取所需的任何详细信息。

foreach(var user in users)
{
   //do stuff
} 

用于存储UserDetail的稍微简单的方法(imho)将使用mvc3框架附带的Profile提供程序。然后,您将手动使用三个提供商(成员资格,角色和个人资料),因为它们被设计为使用。