【问题标题】:How can I accept JSON requests from a Kendo UI data source in my MVC4 application?如何在我的 MVC4 应用程序中接受来自 Kendo UI 数据源的 JSON 请求?
【发布时间】:2012-04-20 04:48:19
【问题描述】:

我在我的 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;
}

这个函数是一个“钩子”,它允许我在 Kendo ajax 之前操纵data。默认情况下,Kendo DataSource 发送内容类型的表单编码,但对于 MVC 模型绑定器来说并不完全正确。没有这个,我仍然可以使用 FormCollection 并进行自己的绑定,但这不是。

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 我需要重新启动该项目以检查这一点,但它可能会有所帮助,谢谢。
    猜你喜欢
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 2013-02-05
    • 2019-06-17
    • 1970-01-01
    相关资源
    最近更新 更多