我正在努力获取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的新手并试图让它发挥作用。
威尔
答案 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;
}
请查看角色和用户的交叉参考表。