2

我在我的 MVC3 应用程序中使用了 Kendo UI 网格,对此我感到非常满意。我正在使用 Telerik 提供的示例(摘录如下)来格式化网格的 DataSource 盟友发布的数据,一切都很好。但是,我不想依赖这样的代码。我想让 Kendo 和 MVC 在没有“翻译器”的情况下说话,即这段代码:

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在 Kendo ajaxes 之前对其进行操作。默认情况下,Kendo DataSource 发送内容类型的表单编码,但对于 MVC 模型绑定器来说并不完全正确。没有这个,我仍然可以使用 FormCollection 并进行自己的绑定,但这不是。

当我配置DataSource发送 JSON,并将我的映射函数更改为如下所示

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

我在请求中发送了以下数据,但现在我不知道如何让 MVC 绑定到这个。现在我唯一的希望是在 action 方法中获取 Request.Params[0],然后自己反序列化这个 JSON。

我认为我不应该编写任何代码来让两个 HTTP 端点在当今时代使用 JSON 进行正确通信。我做错了什么,或者,我应该在我身边看什么,即请求的接收者。我真的更愿意尽量减少我对客户端的干预,也许只是stringify打电话。

4

1 回答 1

1

不知道这是否仍然是一个问题,因为这是一个相当老的问题,但我有一个场景,我将 json 数据发送到我的控制器,我不得不给它一个“提示”名称是什么模型绑定将正常工作:

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

在我的场景中,kendo 正在序列化我的数据并idList[]在表单中给它一个名称 post 而不仅仅是idList. 一旦我给它模型绑定提示,它就像一个魅力。这可能与您的方案相同。

于 2012-10-13T03:35:52.903 回答