嵌套属性上的PagingList排序

时间:2019-02-01 14:20:29

标签: c# asp.net asp.net-core

说我有两个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。还有其他方法吗?

0 个答案:

没有答案