2015-12-10 6 views
0

Каков наилучший способ сортировки SelectList ролей пользователей, как показано ниже? Я хочу, чтобы имена ролей отображались в алфавитном порядке.Как отсортировать список ролей пользователей в MVC?

Это мой код контроллера:

ViewBag.RoleId = new SelectList(await RoleManager.Roles.ToListAsync(), "Name", "Name"); 

Это мой взгляд код:

@foreach (var item in (SelectList)ViewBag.RoleId) 
    { 
     input type="checkbox" name="SelectedRoles" value="@item.Value" class="checkbox-inline" /> 
    } 

ОБНОВЛЕНИЕ - РАБОЧИЙ КОД:

Контроллер:

var getRoles = await RoleManager.Roles.ToListAsync(); 
ViewBag.Roles = getRoles.OrderBy(x => x.Name); 

Вид:

@foreach (var item in ViewBag.Roles) 
{ 
    <input type="checkbox" name="SelectedRoles" value="@item.Name" class="checkbox-inline" /> 
    <label for="@item.Name" class="control-label">@item.Name</label> 
} 
+0

Использование 'SelectList' (которое предназначено для использования в выпадающем списке) не имеет большого смысла. См. [Этот ответ] (http://stackoverflow.com/questions/30738451/post-to-mvc-controller-ienumerable-nested-model-is-null-when-i-dont-select-chec/30745023#30745023) для лучшего подхода –

ответ

3

Изменить код контроллера для

ViewBag.RoleId = new SelectList(await RoleManager.Roles.ToListAsync(), "Name", "Name").OrderBy(x => x.Text);

Если вы сделаете это, вы тогда должны изменить оттенок на ваш взгляд, чтобы:

@foreach (var item in (IEnumerable<SelectListItem>)ViewBag.RoleId) 

It может быть проще просто изменить ваш код вида на:

@foreach (var item in ((SelectList)ViewBag.RoleId).OrderBy(x => x.Text)) 
{ 
    input type="checkbox" name="SelectedRoles" value="@item.Value" class="checkbox-inline" /> 
} 

как это означает, что никаких изменений в коде контроллера не происходит.

+0

Я пробовал это, но получаю сообщение об ошибке - Невозможно применить объект типа «System.Linq.OrderedEnumerable'2 [System.Web.Mvc.SelectListItem, System.String] 'для ввода« System.Web.Mvc. SelectList. – MWD

+1

@MWD См. Редактирование. Честно говоря, я не уверен, что это отличное использование SelectList, поскольку оно предназначено для использования с выпадающими меню. Вы можете просто передать «Список », чтобы достичь того же. – Slappywag

+0

Спасибо, ур обновил ответ, отлично работает. Я также рассмотрю использование списка . Благодаря :) – MWD

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