2012-04-20 27 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

相关问题