Asp.net mvc 4 从apicontroller绑定剑道ui网格

Asp.net mvc 4 从apicontroller绑定剑道ui网格,asp.net-mvc-4,asp.net-web-api,kendo-ui,kendo-grid,asp.net-apicontroller,Asp.net Mvc 4,Asp.net Web Api,Kendo Ui,Kendo Grid,Asp.net Apicontroller,我使用的是剑道ui JQuery版本,我试图从ApiController填充剑道ui网格。我的网格仍然是空的。。。我错过了什么 以下是我的ApiController的结果:~/api/Countries: [{"Id":4,"Name":"Germany"}, {"Id":5,"Name":"China"}, {"Id":6,"Name":"Myanmar"}] 这是我的ApiController代码: public class CountriesController : ApiContr

我使用的是剑道ui JQuery版本,我试图从ApiController填充剑道ui网格。我的网格仍然是空的。。。我错过了什么

以下是我的ApiController的结果:~/api/Countries:

[{"Id":4,"Name":"Germany"},
 {"Id":5,"Name":"China"},
 {"Id":6,"Name":"Myanmar"}]
这是我的ApiController代码:

public class CountriesController : ApiController
{
    private DBContext db = new DBContext();

    // GET api/Countries
    [Queryable]
    public IQueryable<Country> GetCountries()
    {
        return db.Countries;
    }
}
以下是我的cshtml代码:

<script type='text/javascript'>

    $(document).ready(function () {
        $("#grid").kendoGrid({
            columns: [
                { field: "Id", title: "id" },
                { field: "Name", title: "name" }
            ],
            dataSource: new kendo.data.DataSource({
                transport: {
                    read: "api/Countries"
                },
                schema: {
                    model: {
                        id: "Id",
                        fields: {
                            Id: { type: "number" },
                            Name: { type: "string" }
                        }
                    }
                },
                pageSize: 3
            }),
            pageable: true
        });
    });

</script>

谢谢你的帮助。

剑道网格没有以正确的格式恢复Json。 确保使用KendoMVC DataSourceRequest对象以正确的格式返回数据,以供网格使用

以下是一个例子:

public ActionResult Update([DataSourceRequest] DataSourceRequest request, MyViewModel data)
    {
        var result = UpdateBackend(data);
        return Json(result.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
    }
查看MVC剑道演示页面,了解更多示例:

在我对剑道数据源的API调用中,我总是必须指定它是json返回数据类型,我认为它默认为jsonp

dataSource: new kendo.data.DataSource({
  transport: {
    read: {
         url: "/api/Countries",
         dataType: 'json'
      }
  },
  schema: {
    model: {
      id: "Id",
      fields: {
        Id: { type: "number" },
        Name: { type: "string" }
      }
    }
  },
  pageSize: 3
}),

如果您观察网络流量,是否有针对api/国家/地区的请求,如果有,响应代码是什么?谢谢Robin,我通常会检查网络流量,但这次没有检查。不知道为什么!!无论如何,响应是空的,因为在我的例子中url应该是/api/Countries,而不是api/Countries。这是工作!谢谢你,乔纳森。我有点迷路了。我使用的是JQuery剑道UI,所以是客户端站点。我想我不需要服务器端的KendoMVC。我错了吗?此外,我的问题是关于ApiController的。我已经成功地使用了标准的MVC控制器,添加了如下内容{data:关于Kendo支持的json结果。如果我是正确的,ApiController调用的结果可以是json以外的格式。除了使用DataSourceRequest发送Kendo支持的结果之外,没有其他方法吗?正如前面的其他评论所说,问题是url api/Countries而不是/api/Countries。