2016-08-13 2 views
0

У меня есть мнение, что администратор использует для регистрации новых пользователей.Как фильтровать содержимое выпадающего списка при использовании перечислений в MVC?

При регистрации пользователей администраторы должны выбрать роль, которую пользователь будет иметь.

Моя проблема:

У меня есть перечисление, которые представляют роли в DropDownList и я использую MVC5.1 GetSelectList для заполнения ПЛСА с ролями из перечисления (код будет следовать ниже)

.

Все пользователи имеют определенную роль, и администратор конкретного пользователя не должен устанавливать роль разработчика для пользователя, которого он регистрирует, поэтому мой вопрос заключается в том, как я могу отфильтровать этот список?

Если у пользователя есть роль «Администратор1», он должен видеть роли «только для чтения, администрирования, редактирования», и если у пользователя есть роль «admin2», тогда он должен увидеть «редактировать, читать только» в раскрывающемся списке.

Некоторый код:

перечисление:

public enum OverWatchRoles 
{ 
    Developer = 0, 
    Administrator = 1, 
    Employee = 2 
} 

Вид:

<div class="form-group"> 
    @Html.Label("Roll", new { @class = "col-md-2 control-label" }) 
    <div class="col-md-10"> 
     @Html.DropDownList("Roles", 
      EnumHelper.GetSelectList(typeof(OverWatchRoles)), 
      "Välj Roll", 
      new { @class = "form-control" }) 
    </div> 

ответ

1

Вы можете условно построить элементы, необходимые для создания вашего выпадающего меню, проверив текущая роль пользователя

List<SelectListItem> roles = new List<SelectListItem>();  
roles = Enum.GetNames(typeof(OverWatchRoles)) 
       .Where(f=>f!=OverWatchRoles.Developer.ToString()) 
       .Select(f => new SelectListItem { Value = f, Text = f }).ToList(); 

ViewBag.Roles = roles; 

А на ваш взгляд,

@Html.DropDownList("Roles") 

Если у вас есть модель представления для вашей точки зрения, вы должны использовать, чтобы передать данные вместо ViewBag.

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