c# - 为什么我的 KendoGrid "update"参数在 Controller 中始终为空?

标签 c# javascript kendo-ui telerik kendo-grid

我的 Index.cshtml 文件中有以下代码:

var dataSource = new kendo.data.DataSource({
    type: "json",
    transport: {
        read: {
            url: '@Url.Action("ReadTeachers", "EducationPortal")',
            dataType: "json"
        },
        update: {
            url: '@Url.Action("UpdateTeachers", "EducationPortal")',
            type: "POST"
        },
        parameterMap: function (data, operation) {
            if (operation != "read"){ 
                var result = {};

                for (var i = 0; i < data.models.length; i++) {
                    var teacher = data.models[i];
                    for (var member in teacher) {
                        result["teacher[" + i + "]." + member] = teacher[member];
                    }
                }

                return result;
            } else {
                return JSON.stringify(data);
            }
        }
    },
    batch: true,
    schema: {
        model: {
            id: "TeacherId",
            fields: {
                TeacherId: { type: "number" },
                FullName: { type: "string" },
                IsHeadmaster: { type: "boolean" }
            }
        }
    }
});

$("#teachers").kendoGrid({
    dataSource: dataSource,
    toolbar: ["create", "save"],
    columns: [
        { field: "FullName", title: "Teacher" },
        { field: "IsHeadmaster", title: "Is a Headmaster?", width: "120px" },
        { command: ["destroy"], title: "&nbsp;", width: "85px" }],
    editable: true
});

这是一个带有“批量”编辑功能的标准 KendoGrid。编辑和网格本身都可以正常工作,但后端却不能。当“更新”请求通过时,它会转到此 Controller 方法:

public void UpdateTeachers(string models)
{
    // this method will have real code later
    Console.Write(models);
}

当我在此处放置断点时,Visual Studio 显示 modelsnull。就像这样:

enter image description here

为什么是null

最佳答案

在你的parameterMap中:function ()

而不是使用

return JSON.stringify(data);

使用

return { models: kendo.stringify(data) };

这里您的数据被序列化并附加到名称models,现在该名称models在您的操作中用作参数名称

关于c# - 为什么我的 KendoGrid "update"参数在 Controller 中始终为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22622061/

相关文章:

c# - .Net - 传递可变数量的参数

javascript - node.js/JavaScript 语法 - 向传递的参数添加额外的参数

javascript - 导出为中文PDF

javascript - 收到错误数据后清空 kendo UI 中的网格

javascript - 是否可以有多个剑道网格实例

c# - 有没有办法表示很长的数字?

c# - 对象引用行为

javascript - Bazel 自动生成 ts_library 的依赖项

javascript - 对象函数循环覆盖 javascript?

c# - MVC 3 有条件要求的属性