Kendo Grid DataSourceRequest试图排序的ArgumentException

Per*_*rry 2 c# asp.net-mvc-4 kendo-ui kendo-grid

我正在使用此代码获取我的数据并将其推送到Kendo Grid

public ActionResult Read([DataSourceRequest] DataSourceRequest request)
{
    return Json(GetData(request), JsonRequestBehavior.AllowGet);
}

private DataSourceResult GetData(DataSourceRequest request)
{
    var Items = _db.Item.Local.ToDataSourceResult(request, x => new
    {
        ID = x.ID,
        Title = x.Title,
        LastEdited = x.User.LoginName,
        Category = x.CategoryItem.Title,
        DateEdited = x.DateEdited
    });
    return Items;
}
Run Code Online (Sandbox Code Playgroud)

在Grid的视图中不使用任何模型,让Grid计算出所有内容.一切正常,我也可以浏览页面.但是,当我添加一个排序方法时,它会抛出这个异常,例如:

Invalid property or field - 'Category' for type: Item
Run Code Online (Sandbox Code Playgroud)

并且每个后续请求都会失败,因为它在DataSourceRequest中具有排序,直到我重新加载页面以清除请求.我是否在配置方面遗漏了一些我需要添加到此代码中的内容?

Hun*_*oan 7

是的,因为你的Grid告诉DataSourceResult "I'll sort by Category ".

但在你的DataSource (_db.Item.Local),它没有任何名为'类别'的字段.

(你的x => new {Category = x.CategoryItem.Title,}只需在'排序'完成后选择类别).

所以,你可以尝试这样的事情:

_db.Item.Local.Select(x=> new {
    Category = x.CategoryItem.Title
    }).ToDataSourceResult(request)
Run Code Online (Sandbox Code Playgroud)