代码之家  ›  专栏  ›  技术社区  ›  FosterZ

在下拉框中显示角色列表,但不显示“管理员”角色

  •  0
  • FosterZ  · 技术社区  · 15 年前

    我有一个下拉框显示角色列表。我使用roles.getallroles()在下拉框中显示所有角色,但不想在下拉框中显示名为“admin”的角色。我怎么能把它藏起来?

    2 回复  |  直到 14 年前
        1
  •  4
  •   Glennular    15 年前

    (1)创建 Selectlist 在控制器中删除了管理员 ListItem

    SelectList sl =  new SelectList(Roles.GetAllRoles(), "roleName")
    //remove items as needed
    ViewData["roleName"] = sl;
    

    或(2)穿过 GetAllroles() 集合,如果角色是管理员角色,则不添加该角色。

        2
  •  1
  •   JoeGeeky    15 年前

    尝试在提供程序类型上创建扩展方法并包装调用。如果需要,这将允许您稍后添加其他条件。

    public static class RolesExtension
    {
        public static string[] GetAllNonAdminRoles(this RoleProvider providerInstance)
        {
            return (from role in providerInstance.GetAllRoles()
                    where !role.Equals("Admin", StringComparison.InvariantCultureIgnoreCase)
                    select role).ToArray();
        }
    }
    

    而不是。。。

    System.Web.Security.Roles.GetAllRoles();
    

    打电话给这个…

    System.Web.Security.Roles.Provider.GetAllNonAdminRoles();