ViewBag 是否有 OrderBy 选项
Is there an OrderBy option for ViewBag
我正在尝试对通过 ForEach
调用的 ViewBag
列表的项目进行排序。
我看到有一个 Model.OrderBy
选项。
ViewBag
有类似的东西吗?
我的代码如下:
<select class="list-box tri-state" id="ParentID" name="ParentID">
@foreach (var item in ViewBag.EmployeeList)
{
<option value="@item.Id">@item.FirstName @item.LastName</option>
}
</select>
理想情况下,我希望选择列表按 FirstName
、LastName
排序,但默认按 Id
排序。
我该如何补救?
ViewBag
是动态的。
所以假设它是在控制器中设置的
List<Employee> employees = getEmployeeList();
this.ViewBag.EmployeeList = employees;
//...
return View(model);
在视图中,将 属性 转换为已知类型集合,然后扩展方法应该可用。
@foreach (var item in (ViewBag.EmployeeList as List<Employee>)
.OrderBy(_ => _.FirstName).ThenBy(_ => _.LastName)) {
<option value="@item.Id">@item.FirstName @item.LastName</option>
}
或者,您也可以在将其分配给 ViewBag
之前在控制器中对它进行排序,然后让代码在视图中循环集合。
List<Employee> employees = getEmployeeList()
.OrderBy(_ => _.FirstName).ThenBy(_ => _.LastName)
.ToList();
this.ViewBag.EmployeeList = employees;
//...
我正在尝试对通过 ForEach
调用的 ViewBag
列表的项目进行排序。
我看到有一个 Model.OrderBy
选项。
ViewBag
有类似的东西吗?
我的代码如下:
<select class="list-box tri-state" id="ParentID" name="ParentID">
@foreach (var item in ViewBag.EmployeeList)
{
<option value="@item.Id">@item.FirstName @item.LastName</option>
}
</select>
理想情况下,我希望选择列表按 FirstName
、LastName
排序,但默认按 Id
排序。
我该如何补救?
ViewBag
是动态的。
所以假设它是在控制器中设置的
List<Employee> employees = getEmployeeList();
this.ViewBag.EmployeeList = employees;
//...
return View(model);
在视图中,将 属性 转换为已知类型集合,然后扩展方法应该可用。
@foreach (var item in (ViewBag.EmployeeList as List<Employee>)
.OrderBy(_ => _.FirstName).ThenBy(_ => _.LastName)) {
<option value="@item.Id">@item.FirstName @item.LastName</option>
}
或者,您也可以在将其分配给 ViewBag
之前在控制器中对它进行排序,然后让代码在视图中循环集合。
List<Employee> employees = getEmployeeList()
.OrderBy(_ => _.FirstName).ThenBy(_ => _.LastName)
.ToList();
this.ViewBag.EmployeeList = employees;
//...