Kendo ui 剑道网格-如何将parameterMap输出附加到创建Url

Kendo ui 剑道网格-如何将parameterMap输出附加到创建Url,kendo-ui,kendo-grid,Kendo Ui,Kendo Grid,我有一个网格,我想从中创建一个新项目。看起来是这样的: self.PermissionTypeGrid = kendo.observable({ isVisible: true, permissionTypes: new kendo.data.DataSource({ schema: { model: { id: "PermissionType" }, transport: {

我有一个网格,我想从中创建一个新项目。看起来是这样的:

self.PermissionTypeGrid = kendo.observable({
        isVisible: true,
        permissionTypes: new kendo.data.DataSource({
            schema: {
                model: { id: "PermissionType" },

            transport: {
                read: {
                    url: "/api/ServiceApi?method=Ref/SystemPermissionTypes",
                    type: "GET"
                },
                create: {
                    url: "/api/ServiceApi?method=Ref/SystemPermissionType",
                    type: "POST"
                },
                parameterMap: function(data, type) {
                    if (type == "create") {
                        return { models: kendo.stringify(data) };
                    }
                }
            }
        })
    });
    kendo.bind($("#permissionTypeGrid"), self.PermissionTypeGrid);
{"PermissionType":"test","Description":"test"}
parameterMap部分返回如下所示的字符串:

self.PermissionTypeGrid = kendo.observable({
        isVisible: true,
        permissionTypes: new kendo.data.DataSource({
            schema: {
                model: { id: "PermissionType" },

            transport: {
                read: {
                    url: "/api/ServiceApi?method=Ref/SystemPermissionTypes",
                    type: "GET"
                },
                create: {
                    url: "/api/ServiceApi?method=Ref/SystemPermissionType",
                    type: "POST"
                },
                parameterMap: function(data, type) {
                    if (type == "create") {
                        return { models: kendo.stringify(data) };
                    }
                }
            }
        })
    });
    kendo.bind($("#permissionTypeGrid"), self.PermissionTypeGrid);
{"PermissionType":"test","Description":"test"}
我需要创建一个如下所示的url:“/api/ServiceApi?method=Ref/SystemPermissionType&data={“PermissionType”:“test”,“Description”:“test”}”


换句话说,我有正确的字符串化数据。如何将其附加到指定的url?

将您的类型设置为get。然而。这是个坏习惯。
在POST中,附加在表单数据头中的数据。您可以在这个失败的ajax调用中通过网络嗅探器看到这一点

$.ajax({
  url:'http://test.com',
  data:{'test':'test'},
  type:'POST'
});
如果查看网络流量,您会发现数据不是url的一部分

现在如果你试着用这个来代替

$.ajax({
  url:'http://test.com',
  data:{'test':'test'},
  type:'GET'
});
您将看到数据被附加到URL的查询字符串中

http://test.com/?test=test 
请注意,URL的长度是有限制的,如果试图附加到大量数据,则仅通过GET方法提交数据可能会失败。您还可以让服务器以不同的方式处理GET和POST

您可以搜索Stack Overflow,以获得关于每个应用程序的更多详细说明。
像这样:

self.PermissionTypeGrid = kendo.observable({
        isVisible: true,
        permissionTypes: new kendo.data.DataSource({
            schema: {
                model: { id: "PermissionType" },

            transport: {
                read: {
                    url: "/api/ServiceApi?method=Ref/SystemPermissionTypes",
                    type: "GET"
                },
                create: {
                    url: "/api/ServiceApi?method=Ref/SystemPermissionType",
                    type: "POST"
                },
                parameterMap: function(data, type) {
                    if (type == "create") {
                        return { models: kendo.stringify(data) };
                    }
                }
            }
        })
    });
    kendo.bind($("#permissionTypeGrid"), self.PermissionTypeGrid);
{"PermissionType":"test","Description":"test"}

我建议您将控制器改为Exception a post message,并将该数据嵌入表单数据中(就像您现在所做的那样)

下面是一个创建控制器方法的剑道积垢操作示例