KendoUI MVC:使用ViewModel排序

时间:2014-01-28 15:39:48

标签: kendo-ui kendo-grid kendo-asp.net-mvc

我使用ViewModel类绑定到一个KendoUI网格,它调用工作正常,直到我尝试排序(或过滤)。一切正常,直到我尝试排序 UserName 。我确信这是因为UserName不是我的实体模型(ErrorLog)的属性

public ActionResult ListErrors([DataSourceRequest]DataSourceRequest request)
    {
        IQueryable<ErrorLog> errorLogs = (IQueryable<ErrorLog>)db.ErrorLogs.Include(e => e.User).OrderByDescending(e => e.ErrorLogId);
        DataSourceResult result = errorLogs.ToDataSourceResult(request, errorLog => new ErrorLogViewModel
            {
                ErrorLogId = errorLog.ErrorLogId,
                Message = errorLog.AdditionalMessage,
                UserName = errorLog.User.UserName
            });
        return Json(result);
    }

Kendo MVC文档中似乎没有涉及此方案。

2 个答案:

答案 0 :(得分:3)

在我的数据库查询运行后通过调用ToDataSourceResult解决:

 public ActionResult ListErrors([DataSourceRequest]DataSourceRequest request)
    {
        IQueryable<ErrorLog> errorLogs = (IQueryable<ErrorLog>)db.ErrorLogs.Include(e => e.User).OrderByDescending(e => e.ErrorLogId);
        DataSourceResult result = errorLogs.Select(errorLog => new ErrorLogViewModel
            {
                ErrorLogId = errorLog.ErrorLogId,
                Message = errorLog.AdditionalMessage,
                Timestamp = errorLog.Timestamp,
                UserName = errorLog.User.UserName
            }).ToDataSourceResult(request);
        return Json(result);
    }

答案 1 :(得分:1)

请尝试KendoGridBinderEx项目而不是[DataSourceRequest],与AutoMapper一起使用此方案应该可以正常工作。

有关演示,请参阅here