Kendo Grid服务器包装器不将排序请求作为JSON发送

时间:2013-10-13 12:14:05

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

我在GitHub

上下载了一个Telerik grid-crud样本

我将它从客户端javascript初始化转换为服务器端包装器(下载试用版)

这里是代码(在这里手动输入,开发机器没有连接到inet)

@(Html.Kendo.Grid<SampleViewModel>()
    .Name("SamplGrid")
    .Columns( c=>
    {
        c.Bound(s => s.id);
        c.Bound(s => s.Name);
    })
    .Pageable()
    .Sortable()
    .DataSource( ds => ds
     .Ajax()
     .PageSize(10)
     .Read( r => r.Action("Read", "Samples").Type(HttpVerbs.Post))
     )
)

问题排序不起作用。

在我的版本中发送到服务器的排序表达式如下所示: take=10&skip=0&page=1&pagesize=10&sort%5B0%5D%5Bfield%5d=id%5Bdir%5d=asc

原始样本中的位置如下:

{"take":10,"skip":0,"page":1,"pagesize":10,"sort":[{"field":"id","dir":"asc","compare":null}]}

换句话说,示例发送JSON但我的代码生成了其他内容。

如何让网格使用服务器包装器发送相同的JSON?

1 个答案:

答案 0 :(得分:0)

好的,我找到了问题和解决方案。

正如@Iman所说,发送到服务器的数据是编码而不仅仅是JSON, 并且服务器期待JSON。

sort无效,因为就服务器而言,排序表达式无效。

要使网格发送JSON,需要将其配置为执行此操作。问题是服务器包装器不支持此特定功能。唯一的方法是使用javascript在客户端配置它。

我在Telerik的支持论坛上发现this帖子非常有帮助。