2013-10-13 21 views
0

我下載一個Telerik的grid-crud樣品形成它們的公共樣品在GitHub劍道網格服務器包裝不發送排序請求作爲JSON

我轉換它從客戶端的JavaScript初始化到服務器側包裝(下載試用)

here`s代碼(用手這裏的代碼,那麼開發機沒有連接到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?

+0

我不能不回答你的問題。但這不是必需的。類型(HttpVerbs.Post) – HaBo

+0

@Iman,編輯了這個問題,你能看看嗎? – Menahem

+0

@HaBo我刪除了'HttpVerbs.Post',但MVC默認不允許'Get',所以我找到了'404 Not found'。我不想使用'Get',因爲它有長度限制。 – Menahem

回答

0

好的,我已經找到了問題和解決方案。

正如@Iman所說,發送到服務器的數據是編碼的,而不僅僅是JSON, ,服務器期待JSON。

排序不起作用,因爲就服務器而言排序表達式無效。

要使網格發送JSON,需要對其進行配置。問題是服務器包裝器不支持這個特定功能。唯一的方法就是在客戶端使用javascript配置它。

我發現this在Telerik的支持論壇發帖非常有幫助。