如何对 MVC 中的用户角色列表进行排序?
How to sort a list of users roles in 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>
}
将您的控制器代码修改为
ViewBag.RoleId = new SelectList(await RoleManager.Roles.ToListAsync(), "Name", "Name").OrderBy(x => x.Text);
如果这样做,您需要将视图中的转换更改为:
@foreach (var item in (IEnumerable<SelectListItem>)ViewBag.RoleId)
将您的视图代码简单地更改为:
可能会更容易
@foreach (var item in ((SelectList)ViewBag.RoleId).OrderBy(x => x.Text))
{
input type="checkbox" name="SelectedRoles" value="@item.Value" class="checkbox-inline" />
}
因为这意味着无需更改控制器代码。
对如下所示的用户角色选择列表进行排序的最佳方法是什么?我希望角色名称按字母顺序显示。
这是我的控制器代码:
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>
}
将您的控制器代码修改为
ViewBag.RoleId = new SelectList(await RoleManager.Roles.ToListAsync(), "Name", "Name").OrderBy(x => x.Text);
如果这样做,您需要将视图中的转换更改为:
@foreach (var item in (IEnumerable<SelectListItem>)ViewBag.RoleId)
将您的视图代码简单地更改为:
可能会更容易@foreach (var item in ((SelectList)ViewBag.RoleId).OrderBy(x => x.Text))
{
input type="checkbox" name="SelectedRoles" value="@item.Value" class="checkbox-inline" />
}
因为这意味着无需更改控制器代码。