1

我正在构建项目的管理端,此时我将不得不: - 创建新用户并添加一些关于他们的更具体的信息(即位置、位置等) - 必须将不同的用户分配给不同的角色,

我首先要做的是提取现有用户的信息,将数据与附加表中的信息进行内部连接,并按不同角色进行过滤

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,我希望我应该能够创建 - 创建和编辑功能

4

2 回答 2

0

要获得特定角色的用户,请使用角色提供程序:

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

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

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

存储 UserDetail 的一种稍微简单的方法(恕我直言)是使用 mvc3 框架中包含的 Profile 提供程序。然后,您将一起使用这三个提供程序(成员、角色和配置文件),因为它们被设计为使用。

于 2012-09-07T19:45:57.317 回答
0

您不必只使用.Select,因为您也可以使用.Skipand .Take。您还可以.OrderBy用于设置可重复的顺序,也可以.Where用于过滤掉您不想包含的用户。

那就是如果你想自己动手。

现在,如果您真的想推出自己的产品,它可能并不是您正在寻找的东西,但 Troy Goode 编写了一个最出色的、基于区域的会员制方法。如果需要,您可以将其从 GitHub 分叉并更改为使用配置文件(或通过 EF Code First 将其他信息绑定到用户,我已经这样做了)。

https://github.com/TroyGoode/MembershipStarterKit

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

于 2012-09-07T16:55:44.647 回答