2012-04-20 73 views
2

我在我的MVC3應用程序中使用Kendo UI網格,並且對它很滿意。我正在使用Telerik提供的示例(摘錄如下)來格式化由網格的DataSource盟友發佈的數據,並且都很好。不過,我不想依賴這樣的代碼。我想獲得劍道和MVC說話不帶「翻譯」,即此代碼:我如何在我的MVC4應用程序中接受來自Kendo UI數據源的JSON請求?

parameterMap: function(data, operation) { 
    var result = { }; 
    for (var i = 0; i < data.models.length; i++) { 
     var model = data.models[i]; 
     for (var member in model) { 
      result["models[" + i + "]." + member] = model[member]; 
     } 
    } 
    return result; 
} 

這個函數是一個「鉤子」,讓我操縱data劍道ajaxes出來之前。默認情況下,Kendo DataSource發送內容類型的表單編碼,但不完全正確的MVC模型綁定。如果沒有這個,我仍然可以使用FormCollection並執行我自己的綁定,但那不是。

當我配置DataSource發送JSON,並改變我的映射功能,看起來像這樣

parameterMap: function(data, operation) { 
    return JSON.stringify(data); 
} 

我得到以下數據是在發送請求,但現在我不知道怎麼去MVC綁定到這。現在我唯一的希望是在Action方法中獲取Request.Params [0],並自己反序列化這個JSON。

我不認爲我應該編寫任何代碼才能讓兩個HTTP端點在當今時代使用JSON進行正確通信。我做錯了什麼,或者我應該在我身邊看什麼,即請求的接收者。我真的希望最大限度地減少我對客戶端的干預,可能只是撥打stringify

回答

1

不知道這是否還存在問題,因爲這是一個相當古老的問題,但我有一個場景,我將json數據發送給我的控制器,並且我必須給它一個「提示」名字是使模型結合將正常工作:

public JsonResult GetDatByIds([Bind(Prefix="idList[]")]List<Guid> idList) 

我的方案,劍道被序列化我的數據,並給它的idList[]一個名稱,格式爲後,而不是僅僅idList。一旦我給了它模型綁定提示,它就像一個魅力。這可能對你的情況是一樣的。

+0

我需要重新啓動該項目以檢查此項,但可能有所幫助,謝謝。 – ProfK 2012-10-13 07:23:04

相關問題