我创建了一个下拉列表,让用户通过选择角色来选择他们想要创建的帐户。我面临的问题是它在下拉列表中显示管理员角色。您将如何从列表中隐藏或删除管理员角色?
下拉列表是用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();
}
任何建议 - 欢迎
最佳答案
我认为您应该从创建选择列表的数组中删除管理员角色,而不是从选择列表中删除管理员角色。
所以而不是
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 作为你的 View 模型的一部分。
关于asp.net-mvc-3 - 从下拉列表中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10273453/