Javascript 剑道ui网格下拉编辑器不加载数据

Javascript 剑道ui网格下拉编辑器不加载数据,javascript,asp.net-mvc,kendo-grid,Javascript,Asp.net Mvc,Kendo Grid,无法将数据加载到剑道下拉列表。它从后端获取数据,但列表为空。后端看起来像: [HttpPost] public ActionResult GetCities(DataSourceRequest command) { var cityModel = _uow.Cities.GetAll().ToList(); var gridModel = new DataSourceResult { Data =

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

    [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"
                    }
                }
            }
        });
}
upd*:返回的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"}
      ]}

模型是否也有“Id”字段?正如您在剑道模式中定义的那样……可能不是问题,但可能值得一看。另外,您可以包括
PrepareCityModelForList
方法.updated。Id字段用于主模型-这不是城市模型-城市是主模型的属性是的,我的错。尝试使用
字段:“City.CityName”
而不是
City.Name
作为列定义…没有帮助。加载程序gif仍在select上“运行”,未找到任何元素。Hmm。查看剑道自定义网格编辑器演示,它们指的是整个对象,而不是属性,例如,在本例中,它将是
字段:“City”
,并让模板处理要显示的实际属性(如您所做的),您可以尝试吗?另外,我假设您已经这样做了,但是您是否可以确认正在进行对
GetCities
的ajax调用,并使用浏览器上的F12工具查看响应-只是为了排除数据格式问题,等等。
      {[
          {"CityId":3,"CityName":"Minsk","PostalCode":"220000"}, 
            "CityId":4,"CityName":"Brest","PostalCode":"224000"}, 
            "CityId":5,"CityName":"Vitebsk","PostalCode":"210000"}, 
            "CityId":6,"CityName":"Gomel","PostalCode":"246000"}
      ]}