2

我有一个使用 kendo UI 和 jquery 的 kendoDropDownList。我有这样的错误,不知道为什么会出现此错误。

$("#drpState").kendoDropDownList({
                optionLabel: "States...",
                delay: 10,
                dataTextField: "Name",
                dataValueField: "StateId",
                dataSource: {
                    serverFiltering: true,
                    transport: {
                        read: {
                            headers: {
                                "__RequestVerificationToken": $('input[name=__RequestVerificationToken]').val()
                            },
                            type: "Post",
                            dataType: "json",
                            url: "/Supervision/Tracking/GetStates",
                        }
                    }
                }
            }).data("kendoDropDownList");
        [HttpPost]
        public async Task<JsonResult> GetStates(DataSourceRequest request, CancellationToken cancellationToken = default)
        {
            request.Skip = 0;
            request.Take = 100;

            var states = await _stateService.GetStates(request, cancellationToken);

            return Json(states);
        }

在此处输入图像描述

返回的数据是包含聚合、数据和总计的 DataSourceResult。显然,如您所见, Data 有一个对象数组。

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

3

发生这种情况是因为 Kendo 期望从请求响应中获得一个数组,并获得一个对象。您需要向 Kendo 指定在哪里可以找到该数组。在数据源上使用schema.data

dataSource: {
    serverFiltering: true,
    transport: {
        read: {
            headers: {
                "__RequestVerificationToken": $('input[name=__RequestVerificationToken]').val()
            },
            type: "Post",
            dataType: "json",
            url: "/Supervision/Tracking/GetStates",
        }
    },
    schema: {
        data: "Data"
    }
}

或者你可以像@GaloisGirl 提议的那样直接返回一个数组。

于 2020-11-04T18:42:37.903 回答