ASP.NET Identity UserRole表

时间:2015-07-20 16:37:05

标签: asp.net linq asp.net-identity

我正在努力获取ASP ListView控件,以根据DropDownList控件的值填充用户。在页面加载时,列表视图将填充表中的所有用户。如果我从DropDownList中选择一个角色,我希望它显示属于所选角色的那些用户。我正在使用ASP Identity 2.0和基于角色的身份验证,以及模型绑定。我需要使用连接User Table,UserRole Table和Role表的LinQ创建一个连接,我有点卡住了。如果我选择一个角色,则无法返回。代码如下。

此代码段将角色绑定到DropDownList

    public IQueryable<IdentityRole> BindRoles()
    {
        var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(_db));
        var roles = from role in roleManager.Roles
                    orderby role.Name
                    select role;
        return roles;
    }

这是用于根据DropDownList中的选择更新ListView控件的GetData方法

    public IQueryable<User> GetData([Control("RolesDropDown")] string Id)
    {

        if (Id != null)
        {
            var users = from u in _db.Users
                        where u.Id == Id
                        select u;
            return users;
        }
        else
        return _db.Users;
    }

请注意我是Linq的新手并试图让它发挥作用。

威尔

1 个答案:

答案 0 :(得分:0)

我似乎无法在线查找架构,但有更多可能的交叉引用表会显示其中的用户角色。

您用作GetData([Control("RolesDropDown")] string Id)参数的语法对我来说是新的。我从未见过这个。但是,如果那是您希望过滤的ROLE的ID,那么您将在下面的查询中使用它。

我会使用RolesDropDown.SelectedValue

从下拉列表中获取值
 public IQueryable<User> GetData([Control("RolesDropDown")] string Id)
    {

        if (Id != null)
        {
            var users = from u in _db.Users
                        join r in _db.UsersInRoles on u.UserID equals r.UserID
                        where r.RoleID == Id
                        select u;
            return users;
        }
        else
        return _db.Users;
    }

请查看角色和用户的交叉参考表。