Kendo ui 网格下拉编辑器不加载数据

Kendo ui grid dropdown editor does not load data

无法将数据加载到 kendo 下拉列表。它从后端获取数据,但列表为空。后端看起来像:

    [HttpPost]
    public ActionResult GetCities(DataSourceRequest command)
    {
        var cityModel = _uow.Cities.GetAll().ToList();


        var gridModel = new DataSourceResult
        {
            Data = cityModel.Select(PrepareCityModelForList),
            Total = cityModel.Count
        };

        return Json(gridModel);
    }

前端

            schema: {
                data: "Data",
                total: "Total",
                errors: "Errors",
                model: {
                    id: "Id",
                    fields: {
                        Name: { editable: true, type: "string" },
                        City: { defaultValue: { CityId: 0, CityName: "Select City" } },
                        Address: { editable: true, type: "string" },
                        Tel: { editable: true, type: "string" },
                        Fax: { editable: true, type: "string" },

                    }
                }
            },
           ......
        columns: [...
        {
            field: "City.Name",
            title: "City",
            editor: cityDropDownEditor,
            template: "#=City.CityName#",
            width: 200
        }
 ....


function cityDropDownEditor(container, options) {
    $('<input required data-text-field="CityName" data-value-field="CityId" data-bind="value:' + options.field + '"/>')
        .appendTo(container)
        .kendoDropDownList({
            autoBind: false,
            dataSource: {
                transport: {
                    read:
                    {
                        url: "@Html.Raw(Url.Action("GetCities", "Contact"))",
                        type: "POST",
                        dataType: "json"
                    }
                }
            }
        });
}

城市模型有 CityName(字符串)、CityId(整数)和 CityPostalCode(字符串)字段。控制台中唯一的错误是 "Uncaught TypeError: e.slice is not a function"

更新* PrepareCityModelForList 的代码

    protected virtual CompanyCityModel PrepareCityModelForList(City city)
    {

        return new CompanyCityModel()
        {
            CityId = city.Id,
            CityName = city.Name,
            PostalCode = city.PostalCode
        };
    }

更新*:返回JSON

{"ExtraData":null,"Data":[{"CityId":3,"CityName":"Minsk","PostalCode":"220000"},{"CityId":4,"CityName":"Brest","PostalCode":"224000"},{"CityId":5,"CityName":"Vitebsk","PostalCode":"210000"},{"CityId":6,"CityName":"Gomel","PostalCode":"246000"}],"Errors":null,"Total":4}

问题出在 json,已被 ajax 解决。您必须确保您的 json 很简单,例如:

      {[
          {"CityId":3,"CityName":"Minsk","PostalCode":"220000"}, 
            "CityId":4,"CityName":"Brest","PostalCode":"224000"}, 
            "CityId":5,"CityName":"Vitebsk","PostalCode":"210000"}, 
            "CityId":6,"CityName":"Gomel","PostalCode":"246000"}
      ]}