我使用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文档中似乎没有涉及此方案。
答案 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。