说我有两个ViewModel:TasksViewModel.cs
public class TaskViewModel
{
public String Title {get; set;}
public DepartmentViewModel Department {get; set;}
}
和DeprtmentViewModel.cs
public class DeprtmentViewModel
{
public String Title {get; set;}
}
我正在创建TaskViewModel的PagingList并将其显示在Razor页面中的表上。
控制器中的分页列表代码:
PagingList.Create<TaskViewModel>(await _taskService.GetAll(taskFilterViewModel), _appSettings.PageSize, page,sortExpression,sortExpression);
我想让用户能够根据任务标题和部门标题对表格进行排序。
我能够对任务标题进行排序,但是我无法对部门标题(这是一个嵌套属性)执行此操作。 如何对嵌套属性上的PagingList数据进行排序?
在剃须刀页面的表标题中:
<th>
@Html.SortableHeaderFor(model => model.Title)
</th>
<th>
@Html.SortableHeaderFor(model => model.Department.Title)
</th>
尝试通过单击部门标题对数据进行排序会给我一个ArgumentException。
克服这一问题的一种方法是使用
@Html.SortableHeaderFor(model => model.Department)
在表头中,并针对DepartmentViewModel的Title实现IComparable
。是否有其他选择,因为,否则,我必须为要实现排序的每个嵌套属性实现IComparable。还有其他方法吗?