2015-03-11 4 views
0

Мне нужно отобразить набор флажков для управления ролями пользователей. я могу дать мой взгляд, все существующие роли:MVC 5 Идентичность. Роли для пользователя

var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new MlmDbContext())); 
ViewBag.allRoles = roleManager.Roles.ToList(); 

И я могу получить роли для пользователя в поле зрения:

@{ 
    foreach (var role in Model.Roles) 
{ 

Но что я должен сделать, чтобы показать все роли с привязкой к модели .Roles и чем сохранить изменения?

+1

@ Aкмаль вы видели мой ответ? – clement

ответ

1

вы помещаете идентификатор роли в качестве значения по форме, а затем получить таблицу междунара из выбранных ролей контроллера иль

В одном из моего projectt это является частью кодов, которые должны вас заинтересовать:

контроллера, которые предоставляют данные в целях:

public async Task<ActionResult> Create() 
     { 
      // Get the list of Roles 
      ViewBag.RoleId = new SelectList(await RoleManager.Roles.ToListAsync(), "Name", "Name"); 

      return View(); 
     } 

, демонстрирующая роли:

<div class="form-group"> 
     <label class="col-md-2 control-label"> 
      @Resources.Global.SelectRole 
     </label> 
     <div class="col-md-10"> 
      @foreach (var item in (SelectList)ViewBag.RoleId) 
      { 
       <input type="checkbox" name="SelectedRoles" value="@item.Value" class="checkbox-inline" /> 
       @Html.Label(item.Value, new { @class = "control-label" }) 
      } 
     </div> 
    </div> 

контроллера, которые получают роли выбраны:

[HttpPost] 
     public async Task<ActionResult> Create(RegisterViewModel userViewModel, params string[] selectedRoles) 
     { 
      if (ModelState.IsValid) 
      {...} 
     } 

EDIT:

ОК так это то, что я думаю, что вам нужно:

В контроллере:

RolesList = RoleManager.Roles.ToList().Select(x => new SelectListItem() 
      { 
       Selected = userRoles.Contains(x.Name), 
       Text = x.Name, 
       Value = x.Name 
      }), 

В вид:

<div class="form-group"> 
      @Html.Label("Roles", new { @class = "control-label col-md-2" }) 
      <span class=" col-md-10"> 
       @foreach (var item in Model.RolesList) 
       { 
        <input type="checkbox" name="SelectedRole" value="@item.Value" checked="@item.Selected" class="checkbox-inline" /> 
        @Html.Label(item.Value, new { @class = "control-label" }) 
       } 
      </span> 
     </div> 
+0

Спасибо за ваш ответ! Но я до сих пор не понимаю, как я могу отобразить тот же список флажков для EDIT. Как я могу привязать его к userroles ...? –

+0

Его работа! Спасибо! –

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