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

Также не часть вашего вопроса, но я настоятельно рекомендую сделать SelectList часть вашего ViewModel.

+0

foreach (роль строки в ролях.GetAllRoles(). Где (role => role! = "Admin")) –

+0

@DazaAza Спасибо, отредактированный ответ. Также предлагаются несвязанные предложения. – DMulligan

Смежные вопросы