2012-04-23 158 views
3

我創建了一個下拉列表,讓用戶通過選擇角色來選擇希望創建哪個帳戶。我面臨的問題是它顯示了下拉菜單中的管理員角色。你將如何去隱藏或刪除列表中的管理員角色?從下拉列表中刪除項目

與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(); 
     } 

任何通知 - 歡迎

回答

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(); 

也不是你的問題的一部分,但我強烈建議使你的viewmodel的SelectList部分。

+0

正確的解決方案需要額外的「)」 foreach(String role in Roles.GetAllRoles()。Where(role => role!=「admin」)) – 2012-04-23 01:14:43

+0

@DazaAza謝謝,編輯答案。還提供了無關的建議。 – DMulligan 2012-04-23 01:17:59