我的 Kendo 网格没有填充从 Controller 返回的 JSON 对象

My Kendo grid is not populating with JSON object returned from Controller

我正在编写一个将某些信息存储在会话变量中的 MVC 应用程序。我可以毫无问题地填充我的回购 class 中的列表。我遇到的问题是,当我单击我的搜索客户端控制器时,它只会给我一个 JSON 对象,但不会填充我的 Kendo 网格。

这是我的数据源:

var clientSearch = new kendo.data.DataSource({
    transport: {
        read: {
            url: "SearchClient",
            contentType: "application/json; charset=utf-8",
            dataType: "json"    
        },

        create: {
            url: "ClientInformation",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            type: "POST"
        },
        parameterMap: function (data, operator) {
            if (operator != "read")
                return JSON.stringify(viewModel);
        }
    },
    schema: {
        model: {
            id: "clientName", 
        }
    }
});

这是我的网格:

$("#grid").kendoGrid({
    dataSource: clientSearch,
    columns: [{
        field: "clientName",
        title: "Client Name",            
    },
    {
        field: "clientNumber",
        title: "Client Number",
    },
    {
        field: "clientType",
        title: "Client Type",
    }]        
})

这是我的控制器,正在返回我的 JSON 对象:

[HttpGet]
public ActionResult SearchClient()
{
    HttpSessionStateBase session = HttpContext.Session;
    Repo repo = new Repo(session);
    var result = repo.GetClient();

    return Json(new
    {
        list = result,
        count = result.Count
    }, JsonRequestBehavior.AllowGet);
}

您需要在数据源对象的架构中指定您的字段:

var clientSearch = new kendo.data.DataSource({
transport: {
    read: {
        url: "SearchClient",
        contentType: "application/json; charset=utf-8",
        dataType: "json"    
    },

    create: {
        url: "ClientInformation",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        type: "POST"
    },
    parameterMap: function (data, operator) {
        if (operator != "read")
            return JSON.stringify(viewModel);
    }
},
schema: {
    model: {
        id: "clientName", 
        fields: {
            ID: { editable: false },
            clientName: { editable: false },
            clientNumber: { editable: false },
            clientType: { editable: false }
        }
    }
});

Kendo.Mvc 在这样绑定网格时期望 DataSourceRequest and DataSourceResult

public ActionResult SearchClient([DataSourceRequest] DataSourceRequest request)
    {
        HttpSessionStateBase session = HttpContext.Session;
        Repo repo = new Repo(session);
        var result = repo.GetClient();

        return Json(new
        {
            list = result.ToList().ToDataSourceResult(request, ModelState)
        }, "application/json", JsonRequestBehavior.AllowGet);           
    }