从下拉列表中删除项目

时间:2012-04-23 00:31:14

标签: asp.net-mvc-3 entity-framework-4 asp.net-mvc-3-areas

我创建了一个下拉列表,让用户通过选择一个角色来选择他们想要创建的帐户。我面临的问题是它在下拉列表中显示了admin角色。您如何从列表中隐藏或删除管理员角色?

使用viewbag生成下拉列表:

   public ActionResult Register()
        {
            List<SelectListItem> list = new List<SelectListItem>();
            SelectListItem item;
            foreach (String role in Roles.GetAllRoles())
            {
                item = new SelectListItem { Text = role, Value = role };
                list.Add(item);
            }

            ViewBag.roleList = (IEnumerable<SelectListItem>)list;
            return View();
        } 

任何建议 - 欢迎

1 个答案:

答案 0 :(得分:3)

我认为您应该从创建选择列表的数组中删除管理员角色,而不是从选择列表中删除管理员角色。

所以而不是

foreach (String role in Roles.GetAllRoles())


foreach (String role in Roles.GetAllRoles().Where(role => role != "admin"))

如果你愿意,你可以进一步将这个有限的角色调用抽象为自己的方法。

不是您的问题的一部分,但您可以使用简单的linq语句替换所有代码。

ViewBag.roleList = Roles.GetAllRoles().Where(role => role != "admin").
    Select(role => new SelectListItem { Text = role, Value = role}).ToList();

也不是您问题的一部分,但我强烈建议您制作视图模型的SelectList部分。