繁体   English   中英

如何获得MVC5 Web应用程序中所有管理员的列表?

[英]How can I get the list of all admins in MVC5 web application?

我想使用EntityFramework运行查询

   Get(u => u.Roles.Contains("Administrator"));

其中“获取”操作与本教程中的操作相同:

http://www.asp.net/mvc/tutorials/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an- ASP净MVC应用程序

我想以这种方式使用它,因为我需要它通过DbContext,因为它离控制器只有一行,并且我想保持请求的一致性。

因此,我的问题是您该怎么做?使所有用户都具有特定角色的最佳方法是什么?

编辑:

这是我最终使用的代码:

        var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
        string roleId = roleManager.FindByName("Administrator").Id;

        return Get(x => x.Roles.Select(y => y.RoleId).Contains(roleId));

另一个答案很接近,但是您首先需要查找Administrators角色的RoleId (不幸的是,因为IdentityUserRole没有Name属性)。一旦知道了,它就相对简单了。

在下面的示例中,我嵌套了另一个查询,以提取所有包含至少一个IdentityUserRole和特定RoleIdRoles用户

// Add code to look up the appropriate RoleId below.
var roleId = 1; 

Get(u => u.Roles.Any(r => r.RoleId == roleId));

如果不确定如何执行查找,请在相关的SO问题上参考此答案

您没有使用.Contains()打算如何使用它。 查看文档: http : //msdn.microsoft.com/zh-cn/library/system.linq.enumerable.contains( v= vs.100).ASPX

Doc说:“确定序列是否包含指定的元素。” 是否表示T / F。 它不会抓住具有指定角色的用户。 您需要使用.Where()扩展名。 它可能看起来像这样:

var users = userRepo.Where(u => u.Roles.Contains(r => r.Name == "Administrator"));

因此,现在,您将使用户在其任何角色中包含名称为“ Administrator”的角色

尝试使用U.Roles.Name == "Administrator"或类似的东西吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM