1
  • 我正在使用带有 jQ ​​uery 1.8.2的KendoUI 版本2012.3.1114
  • 我正在使用 MVC4,我的方法是路由在 fetch 上抛出一个控制器,在发布时使用 API 控制器。这些工作正常,我已经验证返回的实体包含正确的填充值(Id、Sender、Subject)
  • 我没有使用 MVC 剃须刀版本。

问题

我遇到的问题是我的对象已保存并正确返回,但是当它通过“options.success”方法上的 kendo.web.min.js 文件传递​​时,模型似乎没有填充 Id 字段与新值。

这是与 KendoGrid 一起使用的 js

dataSource = new kendo.data.DataSource({
        transport: {
            read: function (options) {
                $.ajax({
                    dataType: 'json',data: options.data, url: 'messagesfetchmessages', cache: false,
                    success: function (result) {   
                        options.success(result);
                    }
                });
            },
            create: function (options) {
                options.data.Id = 0;
                debugger
                $.ajax({
                    dataType: 'json',data: options.data,type: "POST",url: '/api/messages',cache: false,
                    success: function (result) {
                        //var model = kendo.stringify(result)
                        debugger
                        options.success(result);
                    },
                    error: function (result) {
                        options.error(result);
                    }
                });
            },
        },
        batch: true,
        pageSize: 30,
        schema: {
                    data: "data",
            model: {
                id: "Id",
                fields: {
                    Id: { editable: false, nullable: true },
                    Sender: { validation: { required: true } },
                    Subject: { validation: { required: true } },
                }
            }
        }
});


$("#grid").kendoGrid({
    dataSource: dataSource,
    pageable: true,
    height: 400,
    toolbar: ["create"],
    columns: [
        { field: 'Id', width: "10px" },
        { field: 'Sender', width: "50px" },
        { field: 'Subject', width: "50px" }
        { command: ["edit", "destroy"], title: " ", width: "210px" }],
    editable: "popup"
});

这是结果的几个屏幕截图:

这是成功保存返回的结果 在此处输入图像描述

下面是 KendoUI 调用 'success' 并将对象传递给 jquery deferred 函数后的结果截图(注意模型Id为空):

success: function (t) {
    e.resolve({
        response: t,
        models: n,
        type: i
    })
},

在此处输入图像描述

令人惊讶的是,将我的头撞在键盘上只会伤害键盘......任何指针将不胜感激!

4

1 回答 1

1

问题最终是模式是如何定义的。由于我已将架构数据结果设置为以下内容作为“数据”返回。所有结果必须以相同的方式返回,绑定才能正常工作。

    var schema  = {
        data: "data",
        total: 'total',
        model: MessageModel,
        //http://docs.kendoui.com/api/framework/datasource#schema-object
        errors:  function(e,a,b) {                    
            if(e && e.responseText){
                alert(e.responseText);
                debugger
            }
        },
        parse: function(response) {
            if(!response.total){
                debugger
            }
            //response.data.DateCreated = new Date();
            return response;
        },
        batch: false,
        gridcolumns: columns
    }

因此,在帖子中的成功函数上,代码如下所示:

success: function (result) {
    options.success({
        data: result
    });
}
于 2012-11-17T22:29:32.170 回答