如何从kendo数据源读取操作向WebApi控制器发送多个参数

时间:2015-08-07 14:54:05

标签: json angularjs asp.net-web-api kendo-ui asp.net-web-api2

我有以下场景:我有一个kendo.dataSource,它通过读取请求填充到WebApi控制器。除了读取,我发送了几个参数,然后我在我的控制器中使用它来做一些服务器逻辑。我能够通过传输函数的parameterMap属性发送尽可能多的简单参数。直到现在它是一个简单的获取请求。但是现在我需要将额外的json对象作为参数发送到控制器。我读到我必须将Get请求转换为Post并将Json放到请求的主体上,但我不知道该怎么做。

到目前为止我的代码:

var gridDataSource = new kendo.data.DataSource({
        type: 'odata-v4',
        transport: {
            read: {
                url: wave.alarmsAndEvents.api('api/alarmsAndEventsSearch/post'),
                type: "POST",
                data: {
                    SearchModel: JSON.stringify(vm.searchModel)
                },
                contentType: 'application/json; charset=utf-8',

            },

            parameterMap: function (data, operation) {
                if (operation === "read") {
                    data.startDate = kendo.toString(vm.selectedTimeInterval.start, "G");
                    data.endDate = kendo.toString(vm.selectedTimeInterval.end, "G");
                    data.alarmsToDisplay = vm.maxRecords;
                }
                return kendo.stringify(data);
            }
        },
        pageSize: vm.maxRecords,
        error: function (e) {
            alert(e.xhr.responseText);
        }
    });

SearchModel是我要发送给JSon的内容。其余的是简单的DateTimeint参数。

我的控制器:

[HttpPost]
    public IQueryable<AlarmsSearchViewModel> Post(DateTime startDate, DateTime endDate, int alarmsToDisplay, [FromBody]JToken jsonbody)
    {
        ....
        return something;
    }

我最终得到Not Found 404,但我很确定我搞砸了参数。从网络窗口我可以看到根本没有发送json对象。任何帮助将不胜感激!

0 个答案:

没有答案