e.slice 不是函数

e.slice is not a function

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

$("#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,包含Aggregates、Data和Total。显然,数据有一个对象数组,如您所见。

发生这种情况是因为 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 提议的那样直接return一个数组。